iPXE
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)
 FILE_SECBOOT (PERMITTED)
 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.
 PROVIDE_SMBIOS (efi, find_smbios, efi_find_smbios)

Variables

static struct smbios_entry * smbios_entry
 SMBIOS configuration table.
static struct smbios3_entry * smbios3_entry
 SMBIOS configuration table.

Detailed Description

iPXE SMBIOS API for EFI

Definition in file efi_smbios.c.

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_OR_LATER )

◆ FILE_SECBOOT()

FILE_SECBOOT ( PERMITTED )

◆ EFI_USE_TABLE() [1/2]

EFI_USE_TABLE ( SMBIOS_TABLE ,
& smbios_entry,
0  )

◆ EFI_USE_TABLE() [2/2]

EFI_USE_TABLE ( SMBIOS3_TABLE ,
& smbios3_entry,
0  )

◆ efi_find_smbios()

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 49 of file efi_smbios.c.

49 {
50
51 /* Use 64-bit table if present */
53 smbios->address = phys_to_virt ( smbios3_entry->smbios_address );
55 smbios->count = 0;
58 DBG ( "Found 64-bit SMBIOS v%d.%d entry point at %p (%lx+%zx)\n",
60 virt_to_phys ( smbios->address ), smbios->len );
61 return 0;
62 }
63
64 /* Otherwise, use 32-bit table if present */
66 smbios->address = phys_to_virt ( smbios_entry->smbios_address );
71 DBG ( "Found 32-bit SMBIOS v%d.%d entry point at %p (%lx+%zx)\n",
73 virt_to_phys ( smbios->address ), smbios->len );
74 return 0;
75 }
76
77 DBG ( "No SMBIOS table provided\n" );
78 return -ENODEV;
79}
#define DBG(...)
Print a debugging message.
Definition compiler.h:498
#define ENODEV
No such device.
Definition errno.h:510
#define SMBIOS3_SIGNATURE
Signature for 64-bit SMBIOS entry point.
Definition smbios.h:40
#define SMBIOS_SIGNATURE
Signature for 32-bit SMBIOS entry point.
Definition smbios.h:36
#define SMBIOS_VERSION(major, minor)
Calculate SMBIOS version.
Definition smbios.h:216
SMBIOS 64-bit entry point.
Definition smbios.h:91
uint8_t major
Major version.
Definition smbios.h:104
uint64_t smbios_address
Structure table address.
Definition smbios.h:116
uint8_t minor
Minor version.
Definition smbios.h:106
uint32_t signature
Signature.
Definition smbios.h:96
uint32_t smbios_len
Structure table length.
Definition smbios.h:114
SMBIOS 32-bit entry point.
Definition smbios.h:50
uint32_t smbios_address
Structure table address.
Definition smbios.h:77
uint8_t minor
Minor version.
Definition smbios.h:63
uint32_t signature
Signature.
Definition smbios.h:55
uint16_t smbios_count
Number of SMBIOS structures.
Definition smbios.h:79
uint16_t smbios_len
Structure table length.
Definition smbios.h:75
uint8_t major
Major version.
Definition smbios.h:61
SMBIOS entry point descriptor.
Definition smbios.h:198
size_t len
Length of SMBIOS structures.
Definition smbios.h:202
unsigned int count
Number of SMBIOS structures.
Definition smbios.h:204
uint16_t version
SMBIOS version.
Definition smbios.h:206
const void * address
Start of SMBIOS structures.
Definition smbios.h:200

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

Referenced by PROVIDE_SMBIOS().

◆ PROVIDE_SMBIOS()

PROVIDE_SMBIOS ( efi ,
find_smbios ,
efi_find_smbios  )

References efi_find_smbios(), and find_smbios().

Variable Documentation

◆ smbios_entry

struct smbios_entry* smbios_entry
static

SMBIOS configuration table.

Definition at line 36 of file efi_smbios.c.

◆ smbios3_entry

struct smbios3_entry* smbios3_entry
static

SMBIOS configuration table.

Definition at line 40 of file efi_smbios.c.