这三种Image types的entry point是一样的。 UEFI Image Entry Point 系统表包含指针,这些指针指向active console devices、Boot Services Table、 Runtime Services Table、the list of system configuration tables(ACPI, SMBIOS, SAL System Table)。 EFI_IMAGE_ENTRY_POINT This is the main entry point for a UE...
它就是EFI_IMAGE_ENTRY_POINT,位于最新版(截止本节写作之时,最新版的UEFI标准是2021年3月发布的第2.9版)的第297页当中。 EFI_IMAGE_ENTRY_POINT的定义 可以看到,它的定义就是一个函数指针的类型,翻译成函数的表示是这样的: EFI_STATUSentryPoint(EFI_HANDLEImageHandle,EFI_SYSTEM_TABLE*SystemTable); 其中的IN...
由上可见,该protocol返回结果的数据结构是EFI_LOADED_IMAGE_PROTOCOL,从该数据结构中,我们可以获取很多有关image的信息,比如ImageBase、ImageSize等。 继续看efi_pe_entry函数。 在调用完handle_protocol获取了image信息后,该函数紧接着使用了efi_table_attr宏,从image中获取image_base的值,即运行时的kernel在内存中的...
在调用完handle_protocol获取了image信息后,该函数紧接着使用了efi_table_attr宏,从image中获取image_base的值,即运行时的kernel在内存中的起始地址。 接着根据startup_32函数地址和image_base的值,算出image_offset,该offset指的是bzImage中的compressed部分在整个bzImage中的偏移量(startup_32是compressed部分的第...
继续看efi_pe_entry函数。 在调用完handle_protocol获取了image信息后,该函数紧接着使用了efi_table_attr宏,从image中获取image_base的值,即运行时的kernel在内存中的起始地址。 接着根据startup_32函数地址和image_base的值,算出image_offset,该offset指的是bzImage中的compressed部分在整个bzImage中的偏移量(start...
kernel_entry = (EFI_IMAGE_ENTRY_POINT) ((const uint8_t *)new_buffer + kernel_entry_address);/* register a LoadedImage Protocol in order to pass on the commandline */ err = loaded_image_register(cmdline, cmdline_len, new_buffer, linux_length, &loaded_image_handle); ...
365 // Image Entry prototype 366 367 typedef 368 EFI_STATUS 369 (EFIAPI *EFI_IMAGE_ENTRY_POINT) ( 370 IN EFI_HANDLE ImageHandle, 371 IN struct _EFI_SYSTEM_TABLE *SystemTable 372 ); 373 374 typedef 375 EFI_STATUS 376 (EFIAPI *EFI_IMAGE_LOAD) ( 377 IN BOOLEAN...
为EFI ENTRY POINT 类型。 测试协议和具体执行测试的测试函数之间的关系如图2 所示。完成对某个 EFI 服务或协议的测试的所有测试函数 都被组织在一个测试驱动(Test Driver)中,这个测试驱动上 安装了测试协议,测试函数用合法或不合法的参数调用被测 试服务或协议的接口,并检测返回结果,从而判断被测试服 ...
Prototype typedef EFI_STATUS (EFIAPI *EFI_LEGACY_BIOS_INSTALL_ROM) ( IN EFI_LEGACY_BIOS_PROTOCOL *This, IN EFI_HANDLE PciHandle, IN VOID **RomImage, OUT UINTN *Flags OUT UINT8 *DiskStart, OPTIONAL OUT UINT8 *DiskEnd, OPTIONAL OUT VOID **RomShadowAddress, OPTIONAL OUT UINT32 *...
模块化的设计,文件系统的支持等这 些只有操作系统才有的特性.实质上,EFI架构本身 就是个嵌入式操作系统.为了支持模块化设计,EFI 定义了驱动模型EDM(EFIDriverMode1).这样每 个硬件厂商可以按照EDM标准开发出自己设备的驱 动,从而减少了厂商之间彼此的依赖l生.作为一种新 型的BIOS,EFI的映像文件(Image)也是需要...