UEFI 支持

UEFI stub 库函数

efi_status_t efi_get_memory_map(struct efi_boot_memmap **map, bool install_cfg_tbl)

获取内存映射

参数

struct efi_boot_memmap **map

指向内存映射指针的指针,新分配的内存映射将被分配到该指针

bool install_cfg_tbl

是否将启动内存映射安装为配置表

描述

检索 UEFI 内存映射。分配的内存为最多 EFI_MMAP_NR_SLACK_SLOTS 个额外的内存映射条目留出了空间。

返回值

状态码

efi_status_t efi_allocate_pages(unsigned long size, unsigned long *addr, unsigned long max)

分配内存页

参数

unsigned long size

要分配的最小字节数

unsigned long *addr

返回时,分配的第一个页面的地址。 第一个分配的页面具有 EFI_ALLOC_ALIGN 对齐方式,它是架构相关的页面大小的倍数。

unsigned long max

最后分配的内存页面不应超过的地址

描述

将页面分配为 EFI_LOADER_DATA。分配的页面根据 EFI_ALLOC_ALIGN 对齐。 最后分配的页面将不会超过 **max** 给定的地址。

返回值

状态码

void efi_free(unsigned long size, unsigned long addr)

释放内存页

参数

unsigned long size

要释放的内存区域的大小(以字节为单位)

unsigned long addr

要释放的内存区域的起始地址(必须是 EFI_PAGE_SIZE 对齐的)

描述

**size** 向上舍入到 EFI_ALLOC_ALIGN 的倍数,它是架构特定的 EFI_PAGE_SIZE 的倍数。因此,此函数应仅用于返回使用 efi_allocate_pages() 或 efi_low_alloc_above() 分配的页面。