Added nvo_save()
[people/mcb30/gpxe.git] / src / include / gpxe / nvo.h
1 #ifndef _GPXE_NVO_H
2 #define _GPXE_NVO_H
3
4 /** @file
5  *
6  * Non-volatile stored options
7  *
8  */
9
10 #include <stdint.h>
11
12 struct nvs_device;
13 struct dhcp_option_block;
14
15 /**
16  * A fragment of a non-volatile storage device used for stored options
17  */
18 struct nvo_fragment {
19         /** Starting address of fragment within NVS device */
20         unsigned int address;
21         /** Length of fragment */
22         size_t len;
23 };
24
25 /**
26  * A block of non-volatile stored options
27  */
28 struct nvo_block {
29         /** Underlying non-volatile storage device */
30         struct nvs_device *nvs;
31         /** List of option-containing fragments
32          *
33          * The list is terminated by a fragment with a length of zero.
34          */
35         struct nvo_fragment *fragments;
36         /** Total length of all fragments
37          *
38          * This field is filled in by nvo_register().
39          */
40         size_t total_len;
41         /** DHCP options block */
42         struct dhcp_option_block *options;
43 };
44
45 extern int nvo_register ( struct nvo_block *nvo );
46 extern int nvo_save ( struct nvo_block *nvo );
47 extern void nvo_unregister ( struct nvo_block *nvo );
48
49 #endif /* _GPXE_NVO_H */