1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
-
-
- #include <errno.h>
- #include <gpxe/smbios.h>
- #include <gpxe/efi/efi.h>
- #include <gpxe/efi/Guid/SmBios.h>
-
-
-
-
- static struct smbios_entry *smbios_entry;
- EFI_USE_TABLE ( EFI_SMBIOS_TABLE, &smbios_entry, 0 );
-
-
- static int efi_find_smbios ( struct smbios *smbios ) {
-
- if ( ! smbios_entry ) {
- DBG ( "No SMBIOS table provided\n" );
- return -ENODEV;
- }
-
- if ( smbios_entry->signature != SMBIOS_SIGNATURE ) {
- DBG ( "Invalid SMBIOS signature\n" );
- return -ENODEV;
- }
-
- smbios->address = phys_to_user ( smbios_entry->smbios_address );
- smbios->len = smbios_entry->smbios_len;
- smbios->count = smbios_entry->smbios_count;
- DBG ( "Found SMBIOS v%d.%d entry point at %p (%x+%zx)\n",
- smbios_entry->major, smbios_entry->minor, smbios_entry,
- smbios_entry->smbios_address, smbios->len );
-
- return 0;
- }
-
- PROVIDE_SMBIOS ( efi, find_smbios, efi_find_smbios );
|