MdePkg PeiServicesLib: Add PeiServicesFreePages

Add PeiServicesFreePages and update
comments for PeiServicesAllocatePages.

Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Star Zeng 2017-03-03 16:45:11 +08:00
parent b2374cecb0
commit 3f315ecd9a
2 changed files with 55 additions and 11 deletions

View File

@ -1,7 +1,7 @@
/** @file /** @file
Provides library functions for all PEI Services. Provides library functions for all PEI Services.
Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR> Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at which accompanies this distribution. The full text of the license may be found at
@ -264,16 +264,16 @@ PeiServicesInstallPeiMemory (
); );
/** /**
This service enables PEIMs to allocate memory after the permanent memory has been installed by a This service enables PEIMs to allocate memory.
PEIM.
@param MemoryType Type of memory to allocate. @param MemoryType Type of memory to allocate.
@param Pages Number of pages to allocate. @param Pages The number of pages to allocate.
@param Memory Pointer of memory allocated. @param Memory Pointer of memory allocated.
@retval EFI_SUCCESS The memory range was successfully allocated. @retval EFI_SUCCESS The memory range was successfully allocated.
@retval EFI_INVALID_PARAMETER Type is not equal to AllocateAnyPages. @retval EFI_INVALID_PARAMETER Type is not equal to EfiLoaderCode, EfiLoaderData, EfiRuntimeServicesCode,
@retval EFI_NOT_AVAILABLE_YET Called with permanent memory not available. EfiRuntimeServicesData, EfiBootServicesCode, EfiBootServicesData,
EfiACPIReclaimMemory, EfiReservedMemoryType, or EfiACPIMemoryNVS.
@retval EFI_OUT_OF_RESOURCES The pages could not be allocated. @retval EFI_OUT_OF_RESOURCES The pages could not be allocated.
**/ **/
@ -285,6 +285,25 @@ PeiServicesAllocatePages (
OUT EFI_PHYSICAL_ADDRESS *Memory OUT EFI_PHYSICAL_ADDRESS *Memory
); );
/**
This service enables PEIMs to free memory.
@param Memory Memory to be freed.
@param Pages The number of pages to free.
@retval EFI_SUCCESS The requested pages were freed.
@retval EFI_INVALID_PARAMETER Memory is not a page-aligned address or Pages is invalid.
@retval EFI_NOT_FOUND The requested memory pages were not allocated with
AllocatePages().
**/
EFI_STATUS
EFIAPI
PeiServicesFreePages (
IN EFI_PHYSICAL_ADDRESS Memory,
IN UINTN Pages
);
/** /**
This service allocates memory from the Hand-Off Block (HOB) heap. This service allocates memory from the Hand-Off Block (HOB) heap.

View File

@ -1,7 +1,7 @@
/** @file /** @file
Implementation for PEI Services Library. Implementation for PEI Services Library.
Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR> Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at which accompanies this distribution. The full text of the license may be found at
@ -357,16 +357,16 @@ PeiServicesInstallPeiMemory (
} }
/** /**
This service enables PEIMs to allocate memory after the permanent memory has been This service enables PEIMs to allocate memory.
installed by a PEIM.
@param MemoryType Type of memory to allocate. @param MemoryType Type of memory to allocate.
@param Pages The number of pages to allocate. @param Pages The number of pages to allocate.
@param Memory Pointer of memory allocated. @param Memory Pointer of memory allocated.
@retval EFI_SUCCESS The memory range was successfully allocated. @retval EFI_SUCCESS The memory range was successfully allocated.
@retval EFI_INVALID_PARAMETER Type is not equal to AllocateAnyPages. @retval EFI_INVALID_PARAMETER Type is not equal to EfiLoaderCode, EfiLoaderData, EfiRuntimeServicesCode,
@retval EFI_NOT_AVAILABLE_YET Called with permanent memory not available. EfiRuntimeServicesData, EfiBootServicesCode, EfiBootServicesData,
EfiACPIReclaimMemory, EfiReservedMemoryType, or EfiACPIMemoryNVS.
@retval EFI_OUT_OF_RESOURCES The pages could not be allocated. @retval EFI_OUT_OF_RESOURCES The pages could not be allocated.
**/ **/
@ -384,6 +384,31 @@ PeiServicesAllocatePages (
return (*PeiServices)->AllocatePages (PeiServices, MemoryType, Pages, Memory); return (*PeiServices)->AllocatePages (PeiServices, MemoryType, Pages, Memory);
} }
/**
This service enables PEIMs to free memory.
@param Memory Memory to be freed.
@param Pages The number of pages to free.
@retval EFI_SUCCESS The requested pages were freed.
@retval EFI_INVALID_PARAMETER Memory is not a page-aligned address or Pages is invalid.
@retval EFI_NOT_FOUND The requested memory pages were not allocated with
AllocatePages().
**/
EFI_STATUS
EFIAPI
PeiServicesFreePages (
IN EFI_PHYSICAL_ADDRESS Memory,
IN UINTN Pages
)
{
CONST EFI_PEI_SERVICES **PeiServices;
PeiServices = GetPeiServicesTablePointer ();
return (*PeiServices)->FreePages (PeiServices, Memory, Pages);
}
/** /**
This service allocates memory from the Hand-Off Block (HOB) heap. This service allocates memory from the Hand-Off Block (HOB) heap.