REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdeModulePkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
		
			
				
	
	
		
			173 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			173 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Data structure and functions to allocate and free memory space.
 | |
| 
 | |
| Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
 | |
| SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef _IMEM_H_
 | |
| #define _IMEM_H_
 | |
| 
 | |
| //
 | |
| // +---------------------------------------------------+
 | |
| // | 0..(EfiMaxMemoryType - 1)    - Normal memory type |
 | |
| // +---------------------------------------------------+
 | |
| // | EfiMaxMemoryType..0x6FFFFFFF - Invalid            |
 | |
| // +---------------------------------------------------+
 | |
| // | 0x70000000..0x7FFFFFFF       - OEM reserved       |
 | |
| // +---------------------------------------------------+
 | |
| // | 0x80000000..0xFFFFFFFF       - OS reserved        |
 | |
| // +---------------------------------------------------+
 | |
| //
 | |
| #define MEMORY_TYPE_OS_RESERVED_MIN   0x80000000
 | |
| #define MEMORY_TYPE_OS_RESERVED_MAX   0xFFFFFFFF
 | |
| #define MEMORY_TYPE_OEM_RESERVED_MIN  0x70000000
 | |
| #define MEMORY_TYPE_OEM_RESERVED_MAX  0x7FFFFFFF
 | |
| 
 | |
| //
 | |
| // MEMORY_MAP_ENTRY
 | |
| //
 | |
| 
 | |
| #define MEMORY_MAP_SIGNATURE  SIGNATURE_32('m','m','a','p')
 | |
| typedef struct {
 | |
|   UINTN              Signature;
 | |
|   LIST_ENTRY         Link;
 | |
|   BOOLEAN            FromPages;
 | |
| 
 | |
|   EFI_MEMORY_TYPE    Type;
 | |
|   UINT64             Start;
 | |
|   UINT64             End;
 | |
| 
 | |
|   UINT64             VirtualStart;
 | |
|   UINT64             Attribute;
 | |
| } MEMORY_MAP;
 | |
| 
 | |
| //
 | |
| // Internal prototypes
 | |
| //
 | |
| 
 | |
| /**
 | |
|   Internal function.  Used by the pool functions to allocate pages
 | |
|   to back pool allocation requests.
 | |
| 
 | |
|   @param  PoolType               The type of memory for the new pool pages
 | |
|   @param  NumberOfPages          No of pages to allocate
 | |
|   @param  Alignment              Bits to align.
 | |
|   @param  NeedGuard              Flag to indicate Guard page is needed or not
 | |
| 
 | |
|   @return The allocated memory, or NULL
 | |
| 
 | |
| **/
 | |
| VOID *
 | |
| CoreAllocatePoolPages (
 | |
|   IN EFI_MEMORY_TYPE  PoolType,
 | |
|   IN UINTN            NumberOfPages,
 | |
|   IN UINTN            Alignment,
 | |
|   IN BOOLEAN          NeedGuard
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Internal function.  Frees pool pages allocated via AllocatePoolPages ()
 | |
| 
 | |
|   @param  Memory                 The base address to free
 | |
|   @param  NumberOfPages          The number of pages to free
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| CoreFreePoolPages (
 | |
|   IN EFI_PHYSICAL_ADDRESS  Memory,
 | |
|   IN UINTN                 NumberOfPages
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Internal function to allocate pool of a particular type.
 | |
|   Caller must have the memory lock held
 | |
| 
 | |
|   @param  PoolType               Type of pool to allocate
 | |
|   @param  Size                   The amount of pool to allocate
 | |
|   @param  NeedGuard              Flag to indicate Guard page is needed or not
 | |
| 
 | |
|   @return The allocate pool, or NULL
 | |
| 
 | |
| **/
 | |
| VOID *
 | |
| CoreAllocatePoolI (
 | |
|   IN EFI_MEMORY_TYPE  PoolType,
 | |
|   IN UINTN            Size,
 | |
|   IN BOOLEAN          NeedGuard
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Internal function to free a pool entry.
 | |
|   Caller must have the memory lock held
 | |
| 
 | |
|   @param  Buffer                 The allocated pool entry to free
 | |
|   @param  PoolType               Pointer to pool type
 | |
| 
 | |
|   @retval EFI_INVALID_PARAMETER  Buffer not valid
 | |
|   @retval EFI_SUCCESS            Buffer successfully freed.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| CoreFreePoolI (
 | |
|   IN VOID              *Buffer,
 | |
|   OUT EFI_MEMORY_TYPE  *PoolType OPTIONAL
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Enter critical section by gaining lock on gMemoryLock.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| CoreAcquireMemoryLock (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Exit critical section by releasing lock on gMemoryLock.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| CoreReleaseMemoryLock (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Allocates pages from the memory map.
 | |
| 
 | |
|   @param  Type                   The type of allocation to perform
 | |
|   @param  MemoryType             The type of memory to turn the allocated pages
 | |
|                                  into
 | |
|   @param  NumberOfPages          The number of pages to allocate
 | |
|   @param  Memory                 A pointer to receive the base allocated memory
 | |
|                                  address
 | |
|   @param  NeedGuard              Flag to indicate Guard page is needed or not
 | |
| 
 | |
|   @return Status. On success, Memory is filled in with the base address allocated
 | |
|   @retval EFI_INVALID_PARAMETER  Parameters violate checking rules defined in
 | |
|                                  spec.
 | |
|   @retval EFI_NOT_FOUND          Could not allocate pages match the requirement.
 | |
|   @retval EFI_OUT_OF_RESOURCES   No enough pages to allocate.
 | |
|   @retval EFI_SUCCESS            Pages successfully allocated.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| CoreInternalAllocatePages (
 | |
|   IN EFI_ALLOCATE_TYPE         Type,
 | |
|   IN EFI_MEMORY_TYPE           MemoryType,
 | |
|   IN UINTN                     NumberOfPages,
 | |
|   IN OUT EFI_PHYSICAL_ADDRESS  *Memory,
 | |
|   IN BOOLEAN                   NeedGuard
 | |
|   );
 | |
| 
 | |
| //
 | |
| // Internal Global data
 | |
| //
 | |
| 
 | |
| extern EFI_LOCK    gMemoryLock;
 | |
| extern LIST_ENTRY  gMemoryMap;
 | |
| extern LIST_ENTRY  mGcdMemorySpaceMap;
 | |
| #endif
 |