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