26. EFI_CONFIGURATION_TABLE에서 참조되는 테이블

이전에 사용된 UEFI 애플리케이션들은 아래와 같은 Entry point을 계속해서 사용해왔다.

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

이전에 살펴보지 않은 EFI_SYSTEM_TABLE 구조는 다음과 같은 UEFI 스펙을 따른다.

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;

우리는 이미 해당 구조의 대부분의 필드를 사용해왔고, 이제 다른 필드들을 살펴볼 차례이다.

UEFI의 스펙에 따르면 아래와 같이 설명이 나와있다.

ConfigurationTable에서 사용되는 EFI_CONFIGURATION_TABLE type은 아래와 같은 구조를 나타내고 있다.

이를 통해서 ShowTables라는 간단한 애플리케이션을 만들어 OVMF에서 해당 구조가 참조하는 테이블을 살펴보겠다.

빌드 후 실행을 하면 아래와 같은 결과가 나온다.

해당 GUID들을 edk2 코드베이스에서 찾아보자.

gLzmaCustomDecompressGuid ``LZMA_CUSTOM_DECOMPRESS_GUID https://github.com/tianocore/edk2/tree/master/MdeModulePkg/Include/Guid/LzmaDecompress.h GUID는 LZMA 사용자 지정 압축/압축 해제 알고리즘을 나타낸다. 콘텐츠가 LZMA를 사용하여 압축된 EFI_SECTION_GUID_DEFINED 유형의 FFS 파일 섹션을 식별하는 데 사용되는 전역 ID이다.

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

gEfiHobListGuid ``https://github.com/tianocore/edk2/tree/master/MdePkg/Include/Guid/HobList.h PEI에서 DXE로 전달된 HOB목록

gEfiMemoryTypeInformationGuid ``https://github.com/tianocore/edk2/tree/master/MdeModulePkg/Include/Guid/MemoryTypeInformation.h HOB 메모리 유형 정보

gEfiDebugImageInfoTableGuid ``https://github.com/tianocore/edk2/tree/master/MdePkg/Include/Guid/Debug

gMemoryStatusCodeRecordGuid ``https://github.com/tianocore/edk2/tree/master/MdeModulePkg/Include/Guid/MemoryStatusCodeRecord.h PEI Status 코드에서 발생한 HOB에 대한 Status 코드를 기록한다.

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

gEfiAcpi10TableGuid ``ACPI_10_TABLE_GUID ACPI_TABLE_GUID https://github.com/tianocore/edk2/tree/master/MdePkg/Include/Guid/Acpi.h 이전 사양에 대한 ACPI 테이블

gEfiAcpiTableGuid/gEfiAcpi20TableGuid ``EFI_ACPI_20_TABLE_GUID EFI_ACPI_TABLE_GUID https://github.com/tianocore/edk2/tree/master/MdePkg/Include/Guid/Acpi.h 최신 사양에 대한 ACPI 테이블

gEfiMemoryAttributesTableGuid ``https://github.com/tianocore/edk2/tree/master/MdePkg/Include/Guid/MemoryAttributesTable.h UEFI 메모리 속성 테이블[UEFI 규격에 정의]

Last updated