libsmbios.h revision 76d05dc695b06c4e987bb8078f78032441e1430c
1#ifndef _LIB_SMBIOS_H
2#define _LIB_SMBIOS_H
3/*++
4
5Copyright (c) 2000  Intel Corporation
6
7Module Name:
8
9    LibSmbios.h
10
11Abstract:
12
13    Lib include  for SMBIOS services. Used to get system serial number and GUID
14
15Revision History
16
17--*/
18
19//
20// Define SMBIOS tables.
21//
22#pragma pack(1)
23typedef 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;
39
40//
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.
43//
44
45typedef struct {
46    UINT8   Type;
47    UINT8   Length;
48    UINT8   Handle[2];
49} SMBIOS_HEADER;
50
51typedef UINT8   SMBIOS_STRING;
52
53typedef 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;
62
63typedef struct {
64    SMBIOS_HEADER   Hdr;
65    SMBIOS_STRING   Manufacturer;
66    SMBIOS_STRING   ProductName;
67    SMBIOS_STRING   Version;
68    SMBIOS_STRING   SerialNumber;
69
70    //
71    // always byte copy this data to prevent alignment faults!
72    //
73    EFI_GUID        Uuid;
74
75    UINT8           WakeUpType;
76} SMBIOS_TYPE1;
77
78typedef struct {
79    SMBIOS_HEADER   Hdr;
80    SMBIOS_STRING   Manufacturer;
81    SMBIOS_STRING   ProductName;
82    SMBIOS_STRING   Version;
83    SMBIOS_STRING   SerialNumber;
84} SMBIOS_TYPE2;
85
86typedef 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;
99
100typedef 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;
118
119typedef 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()
129
130
131#endif
132
133