iPXE
Functions | Variables
efi_smbios.c File Reference

iPXE SMBIOS API for EFI More...

#include <errno.h>
#include <ipxe/uaccess.h>
#include <ipxe/smbios.h>
#include <ipxe/efi/efi.h>
#include <ipxe/efi/Guid/SmBios.h>

Go to the source code of this file.

Functions

 FILE_LICENCE (GPL2_OR_LATER)
 
 EFI_USE_TABLE (SMBIOS_TABLE, &smbios_entry, 0)
 
 EFI_USE_TABLE (SMBIOS3_TABLE, &smbios3_entry, 0)
 
static int efi_find_smbios (struct smbios *smbios)
 Find SMBIOS. More...
 
 PROVIDE_SMBIOS (efi, find_smbios, efi_find_smbios)
 

Variables

static struct smbios_entrysmbios_entry
 SMBIOS configuration table. More...
 
static struct smbios3_entrysmbios3_entry
 SMBIOS configuration table. More...
 

Detailed Description

iPXE SMBIOS API for EFI

Definition in file efi_smbios.c.

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_OR_LATER  )

◆ EFI_USE_TABLE() [1/2]

EFI_USE_TABLE ( SMBIOS_TABLE  ,
smbios_entry,
 
)

◆ EFI_USE_TABLE() [2/2]

EFI_USE_TABLE ( SMBIOS3_TABLE  ,
smbios3_entry,
 
)

◆ efi_find_smbios()

static int efi_find_smbios ( struct smbios smbios)
static

Find SMBIOS.

Parameters
smbiosSMBIOS entry point descriptor structure to fill in
Return values
rcReturn status code

Definition at line 48 of file efi_smbios.c.

48  {
49 
50  /* Use 64-bit table if present */
52  smbios->address = phys_to_virt ( smbios3_entry->smbios_address );
54  smbios->count = 0;
55  smbios->version =
57  DBG ( "Found 64-bit SMBIOS v%d.%d entry point at %p (%lx+%zx)\n",
59  virt_to_phys ( smbios->address ), smbios->len );
60  return 0;
61  }
62 
63  /* Otherwise, use 32-bit table if present */
65  smbios->address = phys_to_virt ( smbios_entry->smbios_address );
68  smbios->version =
70  DBG ( "Found 32-bit SMBIOS v%d.%d entry point at %p (%lx+%zx)\n",
72  virt_to_phys ( smbios->address ), smbios->len );
73  return 0;
74  }
75 
76  DBG ( "No SMBIOS table provided\n" );
77  return -ENODEV;
78 }
uint32_t signature
Signature.
Definition: smbios.h:54
#define SMBIOS_SIGNATURE
Signature for 32-bit SMBIOS entry point.
Definition: smbios.h:35
unsigned int count
Number of SMBIOS structures.
Definition: smbios.h:203
size_t len
Length of SMBIOS structures.
Definition: smbios.h:201
SMBIOS entry point descriptor.
Definition: smbios.h:197
#define SMBIOS3_SIGNATURE
Signature for 64-bit SMBIOS entry point.
Definition: smbios.h:39
uint16_t version
SMBIOS version.
Definition: smbios.h:205
uint16_t smbios_len
Structure table length.
Definition: smbios.h:74
uint32_t signature
Signature.
Definition: smbios.h:95
SMBIOS 32-bit entry point.
Definition: smbios.h:49
uint32_t smbios_address
Structure table address.
Definition: smbios.h:76
#define SMBIOS_VERSION(major, minor)
Calculate SMBIOS version.
Definition: smbios.h:215
const void * address
Start of SMBIOS structures.
Definition: smbios.h:199
#define ENODEV
No such device.
Definition: errno.h:509
uint16_t smbios_count
Number of SMBIOS structures.
Definition: smbios.h:78
uint8_t minor
Minor version.
Definition: smbios.h:62
uint8_t minor
Minor version.
Definition: smbios.h:105
uint32_t smbios_len
Structure table length.
Definition: smbios.h:113
uint64_t smbios_address
Structure table address.
Definition: smbios.h:115
#define DBG(...)
Print a debugging message.
Definition: compiler.h:498
uint8_t major
Major version.
Definition: smbios.h:60
uint8_t major
Major version.
Definition: smbios.h:103
SMBIOS 64-bit entry point.
Definition: smbios.h:90

References smbios::address, smbios::count, DBG, ENODEV, smbios::len, smbios_entry::major, smbios3_entry::major, smbios_entry::minor, smbios3_entry::minor, smbios_entry::signature, smbios3_entry::signature, SMBIOS3_SIGNATURE, smbios_entry::smbios_address, smbios3_entry::smbios_address, smbios_entry::smbios_count, smbios_entry::smbios_len, smbios3_entry::smbios_len, SMBIOS_SIGNATURE, SMBIOS_VERSION, and smbios::version.

◆ PROVIDE_SMBIOS()

PROVIDE_SMBIOS ( efi  ,
find_smbios  ,
efi_find_smbios   
)

Variable Documentation

◆ smbios_entry

struct smbios_entry* smbios_entry
static

SMBIOS configuration table.

Definition at line 35 of file efi_smbios.c.

◆ smbios3_entry

struct smbios3_entry* smbios3_entry
static

SMBIOS configuration table.

Definition at line 39 of file efi_smbios.c.