Adding upstream version 6.03~pre1+dfsg.
[syslinux-debian/hramrach.git] / efi32 / include / efi / libsmbios.h
blob8f1a28e583d4995d6af4ff289e9e4b0910b43598
1 #ifndef _LIB_SMBIOS_H
2 #define _LIB_SMBIOS_H
3 /*++
5 Copyright (c) 2000 Intel Corporation
7 Module Name:
9 LibSmbios.h
11 Abstract:
13 Lib include for SMBIOS services. Used to get system serial number and GUID
15 Revision History
17 --*/
20 // Define SMBIOS tables.
22 #pragma pack(1)
23 typedef struct {
24 UINT8 AnchorString[4];
25 UINT8 EntryPointStructureChecksum;
26 UINT8 EntryPointLength;
27 UINT8 MajorVersion;
28 UINT8 MinorVersion;
29 UINT16 MaxStructureSize;
30 UINT8 EntryPointRevision;
31 UINT8 FormattedArea[5];
32 UINT8 IntermediateAnchorString[5];
33 UINT8 IntermediateChecksum;
34 UINT16 TableLength;
35 UINT32 TableAddress;
36 UINT16 NumberOfSmbiosStructures;
37 UINT8 SmbiosBcdRevision;
38 } SMBIOS_STRUCTURE_TABLE;
41 // Please note that SMBIOS structures can be odd byte aligned since the
42 // unformated section of each record is a set of arbitrary size strings.
45 typedef struct {
46 UINT8 Type;
47 UINT8 Length;
48 UINT8 Handle[2];
49 } SMBIOS_HEADER;
51 typedef UINT8 SMBIOS_STRING;
53 typedef struct {
54 SMBIOS_HEADER Hdr;
55 SMBIOS_STRING Vendor;
56 SMBIOS_STRING BiosVersion;
57 UINT8 BiosSegment[2];
58 SMBIOS_STRING BiosReleaseDate;
59 UINT8 BiosSize;
60 UINT8 BiosCharacteristics[8];
61 } SMBIOS_TYPE0;
63 typedef struct {
64 SMBIOS_HEADER Hdr;
65 SMBIOS_STRING Manufacturer;
66 SMBIOS_STRING ProductName;
67 SMBIOS_STRING Version;
68 SMBIOS_STRING SerialNumber;
71 // always byte copy this data to prevent alignment faults!
73 EFI_GUID Uuid;
75 UINT8 WakeUpType;
76 } SMBIOS_TYPE1;
78 typedef struct {
79 SMBIOS_HEADER Hdr;
80 SMBIOS_STRING Manufacturer;
81 SMBIOS_STRING ProductName;
82 SMBIOS_STRING Version;
83 SMBIOS_STRING SerialNumber;
84 } SMBIOS_TYPE2;
86 typedef struct {
87 SMBIOS_HEADER Hdr;
88 SMBIOS_STRING Manufacturer;
89 UINT8 Type;
90 SMBIOS_STRING Version;
91 SMBIOS_STRING SerialNumber;
92 SMBIOS_STRING AssetTag;
93 UINT8 BootupState;
94 UINT8 PowerSupplyState;
95 UINT8 ThermalState;
96 UINT8 SecurityStatus;
97 UINT8 OemDefined[4];
98 } SMBIOS_TYPE3;
100 typedef struct {
101 SMBIOS_HEADER Hdr;
102 UINT8 Socket;
103 UINT8 ProcessorType;
104 UINT8 ProcessorFamily;
105 SMBIOS_STRING ProcessorManufacture;
106 UINT8 ProcessorId[8];
107 SMBIOS_STRING ProcessorVersion;
108 UINT8 Voltage;
109 UINT8 ExternalClock[2];
110 UINT8 MaxSpeed[2];
111 UINT8 CurrentSpeed[2];
112 UINT8 Status;
113 UINT8 ProcessorUpgrade;
114 UINT8 L1CacheHandle[2];
115 UINT8 L2CacheHandle[2];
116 UINT8 L3CacheHandle[2];
117 } SMBIOS_TYPE4;
119 typedef union {
120 SMBIOS_HEADER *Hdr;
121 SMBIOS_TYPE0 *Type0;
122 SMBIOS_TYPE1 *Type1;
123 SMBIOS_TYPE2 *Type2;
124 SMBIOS_TYPE3 *Type3;
125 SMBIOS_TYPE4 *Type4;
126 UINT8 *Raw;
127 } SMBIOS_STRUCTURE_POINTER;
128 #pragma pack()
131 #endif