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