Subversion Repositories HelenOS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  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.  
  133.