UEFI 支持

UEFI 存根库函数

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() 分配的页面。