Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

As you remember the entry point for our UEFI programs is:

EFI_STATUS
EFIAPI
UefiMain (
  IN EFI_HANDLE        ImageHandle,
  IN EFI_SYSTEM_TABLE  *SystemTable
  )

The passed structure EFI_SYSTEM_TABLE looks like this according to UEFI specification:

typedef struct {
 EFI_TABLE_HEADER Hdr;
 CHAR16 *FirmwareVendor;
 UINT32 FirmwareRevision;
 EFI_HANDLE ConsoleInHandle;
 EFI_SIMPLE_TEXT_INPUT_PROTOCOL *ConIn;
 EFI_HANDLE ConsoleOutHandle;
 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut;
 EFI_HANDLE StandardErrorHandle;
 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *StdErr;
 EFI_RUNTIME_SERVICES *RuntimeServices;
 EFI_BOOT_SERVICES *BootServices;
 UINTN NumberOfTableEntries;
 EFI_CONFIGURATION_TABLE *ConfigurationTable;
} EFI_SYSTEM_TABLE;

We've already used most of the fields of this structure. Now it is time to peek inside these fields:

UINTN NumberOfTableEntries;
EFI_CONFIGURATION_TABLE *ConfigurationTable

According to the UEFI spec:

NumberOfTableEntries	The number of system configuration tables in the buffer ConfigurationTable.
ConfigurationTable	A pointer to the system configuration tables. The number of entries in the table is NumberOfTableEntries.

As for EFI_CONFIGURATION_TABLE type:

EFI_CONFIGURATION_TABLE

Summary:
Contains a set of GUID/pointer pairs comprised of the ConfigurationTable field in the EFI System Table.

typedef struct{
 EFI_GUID VendorGuid;
 VOID *VendorTable;
} EFI_CONFIGURATION_TABLE;

Let's create a simple program ShowTables to look at tables referenced by this structure in OVMF:

#include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiLib.h>

EFI_STATUS
EFIAPI
UefiMain (
  IN EFI_HANDLE        ImageHandle,
  IN EFI_SYSTEM_TABLE  *SystemTable
  )
{
  for (UINTN i=0; i<SystemTable->NumberOfTableEntries; i++) {
    Print(L"%g, %p\n", SystemTable->ConfigurationTable[i].VendorGuid,
                       SystemTable->ConfigurationTable[i].VendorTable);
  }
  return EFI_SUCCESS;
}

Build and execute it under OVMF:

FS0:\> ShowTables.efi
EE4E5898-3914-4259-9D6E-DC7BD79403CF, 78EDF98
05AD34BA-6F02-4214-952E-4DA0398E2BB9, 7ED2AC0
7739F24C-93D7-11D4-9A3A-0090273FC14D, 78EA018
4C19049F-4137-4DD3-9C10-8B97A83FFDFA, 7ED3AA0
49152E77-1ADA-4764-B7A2-7AFEFED95E8B, 7ED5F10
060CC026-4C0D-4DDA-8F41-595FEF00A502, 7942018
EB9D2D31-2D88-11D3-9A16-0090273FC14D, 7941000
EB9D2D30-2D88-11D3-9A16-0090273FC14D, 7B7E000
8868E871-E4F1-11D3-BC22-0080C73C8881, 7B7E014
DCFA911D-26EB-469F-A220-38B7DC461220, 6E86018

Let's search edk2 codebase for GUIDs:

EE4E5898-3914-4259-9D6E-DC7BD79403CF, 78EDF98

gLzmaCustomDecompressGuid

LZMA_CUSTOM_DECOMPRESS_GUID

https://github.com/tianocore/edk2/tree/master/MdeModulePkg/Include/Guid/LzmaDecompress.h

GUID indicates the LZMA custom compress/decompress algorithm.
The Global ID used to identify a section of an FFS file of type EFI_SECTION_GUID_DEFINED, whose contents have been compressed using LZMA.

05AD34BA-6F02-4214-952E-4DA0398E2BB9, 7ED2AC0

gEfiDxeServicesTableGuid

DXE_SERVICES_TABLE_GUID

https://github.com/tianocore/edk2/tree/master/MdePkg/Include/Guid/DxeServices.h (DXE Services Table)

7739F24C-93D7-11D4-9A3A-0090273FC14D, 78EA018

gEfiHobListGuid

https://github.com/tianocore/edk2/tree/master/MdePkg/Include/Guid/HobList.h

HOB List passed from PEI to DXE

4C19049F-4137-4DD3-9C10-8B97A83FFDFA, 7ED3AA0

gEfiMemoryTypeInformationGuid

https://github.com/tianocore/edk2/tree/master/MdeModulePkg/Include/Guid/MemoryTypeInformation.h

The memory type information HOB

49152E77-1ADA-4764-B7A2-7AFEFED95E8B, 7ED5F10

gEfiDebugImageInfoTableGuid

https://github.com/tianocore/edk2/tree/master/MdePkg/Include/Guid/Debug ImageInfoTable.h

Debug Image Info Table

060CC026-4C0D-4DDA-8F41-595FEF00A502, 7942018

gMemoryStatusCodeRecordGuid

https://github.com/tianocore/edk2/tree/master/MdeModulePkg/Include/Guid/MemoryStatusCodeRecord.h

Status code records HOB that originate from the PEI status code

EB9D2D31-2D88-11D3-9A16-0090273FC14D, 7941000

gEfiSmbiosTableGuid

https://github.com/tianocore/edk2/tree/master/MdePkg/Include/Guid/SmBios.h

SMBIOS tables

EB9D2D30-2D88-11D3-9A16-0090273FC14D, 7B7E000

gEfiAcpi10TableGuid

ACPI_10_TABLE_GUID ACPI_TABLE_GUID

https://github.com/tianocore/edk2/tree/master/MdePkg/Include/Guid/Acpi.h

ACPI tables for old specifications

8868E871-E4F1-11D3-BC22-0080C73C8881, 7B7E014

gEfiAcpiTableGuid/gEfiAcpi20TableGuid

EFI_ACPI_20_TABLE_GUID EFI_ACPI_TABLE_GUID

https://github.com/tianocore/edk2/tree/master/MdePkg/Include/Guid/Acpi.h

ACPI tables for modern specifications

DCFA911D-26EB-469F-A220-38B7DC461220, 6E77018

gEfiMemoryAttributesTableGuid

https://github.com/tianocore/edk2/tree/master/MdePkg/Include/Guid/MemoryAttributesTable.h

UEFI Memory Attributes Table [Defined in UEFI spec]