OcMemoryLib: Allow overriding page allocator for allocate from top

This commit is contained in:
vit9696 2020-11-08 20:11:43 +03:00
parent dd25126610
commit 6d0c49e84c
5 changed files with 11 additions and 5 deletions

View File

@ -221,6 +221,7 @@ VOID
@param[in] Pages Amount of pages to allocate.
@param[in,out] Memory Top address for input, allocated address for output.
@param[in] GetMemoryMap Custom GetMemoryMap implementation to use, optional.
@param[in] AllocatePages Custom AllocatePages implementation to use, optional.
@param[in] CheckRange Handler allowing to not allocate select ranges, optional.
@retval EFI_SUCCESS on successful allocation.
@ -230,8 +231,9 @@ OcAllocatePagesFromTop (
IN EFI_MEMORY_TYPE MemoryType,
IN UINTN Pages,
IN OUT EFI_PHYSICAL_ADDRESS *Memory,
IN EFI_GET_MEMORY_MAP GetMemoryMap OPTIONAL,
IN CHECK_ALLOCATION_RANGE CheckRange OPTIONAL
IN EFI_GET_MEMORY_MAP GetMemoryMap OPTIONAL,
IN EFI_ALLOCATE_PAGES AllocatePages OPTIONAL,
IN CHECK_ALLOCATION_RANGE CheckRange OPTIONAL
);
/**

View File

@ -536,6 +536,7 @@ AppleMapPrepareBooterState (
EFI_SIZE_TO_PAGES (gST->Hdr.HeaderSize),
&BootCompat->KernelState.SysTableRtArea,
GetMemoryMap,
NULL,
NULL
);
if (EFI_ERROR (Status)) {

View File

@ -28,8 +28,9 @@ OcAllocatePagesFromTop (
IN EFI_MEMORY_TYPE MemoryType,
IN UINTN Pages,
IN OUT EFI_PHYSICAL_ADDRESS *Memory,
IN EFI_GET_MEMORY_MAP GetMemoryMap,
IN CHECK_ALLOCATION_RANGE CheckRange OPTIONAL
IN EFI_GET_MEMORY_MAP GetMemoryMap OPTIONAL,
IN EFI_ALLOCATE_PAGES AllocatePages OPTIONAL,
IN CHECK_ALLOCATION_RANGE CheckRange OPTIONAL
)
{
EFI_STATUS Status;
@ -90,7 +91,7 @@ OcAllocatePagesFromTop (
continue;
}
Status = gBS->AllocatePages (
Status = (AllocatePages != NULL ? AllocatePages : gBS->AllocatePages) (
AllocateAddress,
MemoryType,
Pages,

View File

@ -249,6 +249,7 @@ OcGetCurrentMemoryMapAlloc (
(UINTN) *TopMemory,
&MemoryMapAlloc,
GetMemoryMap,
NULL,
NULL
);

View File

@ -157,6 +157,7 @@ VmAllocateMemoryPool (
NumPages,
&Addr,
GetMemoryMap,
NULL,
NULL
);