821eda17e41cf2ef049d41352c75fc46073919a2
[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 length;
17         /** Handle */
18         uint16_t handle;
19 } __attribute__ (( packed ));
20
21 /** SMBIOS system information structure */
22 struct smbios_system_information {
23         /** SMBIOS structure header */
24         struct smbios_header header;
25         /** Manufacturer string */
26         uint8_t manufacturer;
27         /** Product string */
28         uint8_t product;
29         /** Version string */
30         uint8_t version;
31         /** Serial number string */
32         uint8_t serial;
33         /** UUID */
34         uint8_t uuid[16];
35         /** Wake-up type */
36         uint8_t wakeup;
37 } __attribute__ (( packed ));
38
39 /** SMBIOS system information structure type */
40 #define SMBIOS_TYPE_SYSTEM_INFORMATION 1
41
42 struct smbios_strings;
43 extern int find_smbios_structure ( unsigned int type,
44                                    void *structure, size_t length,
45                                    struct smbios_strings *strings );
46 extern int find_smbios_string ( struct smbios_strings *strings,
47                                 unsigned int index,
48                                 char *buffer, size_t length );
49 extern int smbios_get_uuid ( union uuid *uuid );
50
51 #endif /* _SMBIOS_H */