Subversion Repositories HelenOS

Rev

Rev 2726 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2726 vana 1
#ifndef _LIB_SMBIOS_H
2
#define _LIB_SMBIOS_H
3
/*++
4
 
5
Copyright (c) 2000  Intel Corporation
6
 
7
Module Name:
8
 
9
    LibSmbios.h
10
 
11
Abstract:
12
 
13
    Lib include  for SMBIOS services. Used to get system serial number and GUID
14
 
15
Revision History
16
 
17
--*/
18
 
19
//
20
// Define SMBIOS tables.
21
//
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;
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
 
45
typedef struct {
46
    UINT8   Type;
47
    UINT8   Length;
48
    UINT8   Handle[2];
49
} SMBIOS_HEADER;
50
 
51
typedef UINT8   SMBIOS_STRING;
52
 
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;
62
 
63
typedef 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
 
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;
85
 
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;
99
 
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;
118
 
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()
129
 
130
 
131
#endif
132