[Settings] Expose SMBIOS via settings API
[people/mdeck/gpxe.git] / src / arch / i386 / include / smbios.h
1 #ifndef _SMBIOS_H
2 #define _SMBIOS_H
3
4 /** @file
5  *
6  * System Management BIOS
7  */
8
9 #include <stdint.h>
10
11 /** An SMBIOS structure header */
12 struct smbios_header {
13         /** Type */
14         uint8_t type;
15         /** Length */
16         uint8_t len;
17         /** Handle */
18         uint16_t handle;
19 } __attribute__ (( packed ));
20
21 /** SMBIOS structure descriptor */
22 struct smbios_structure {
23         /** Copy of SMBIOS structure header */
24         struct smbios_header header;
25         /** Offset of structure within SMBIOS */
26         size_t offset;
27         /** Length of strings section */
28         size_t strings_len;
29 };
30
31 /** SMBIOS system information structure */
32 struct smbios_system_information {
33         /** SMBIOS structure header */
34         struct smbios_header header;
35         /** Manufacturer string */
36         uint8_t manufacturer;
37         /** Product string */
38         uint8_t product;
39         /** Version string */
40         uint8_t version;
41         /** Serial number string */
42         uint8_t serial;
43         /** UUID */
44         uint8_t uuid[16];
45         /** Wake-up type */
46         uint8_t wakeup;
47 } __attribute__ (( packed ));
48
49 /** SMBIOS system information structure type */
50 #define SMBIOS_TYPE_SYSTEM_INFORMATION 1
51
52 extern int find_smbios_structure ( unsigned int type,
53                                    struct smbios_structure *structure );
54 extern int read_smbios_structure ( struct smbios_structure *structure,
55                                    void *data, size_t len );
56 extern int read_smbios_string ( struct smbios_structure *structure,
57                                 unsigned int index,
58                                 void *data, size_t len );
59
60 #endif /* _SMBIOS_H */