| /** @file | |
| Internal include file of PEI Memory Allocation Library. | |
| Copyright (c) 2006, Intel Corporation | |
| All rights reserved. This program and the accompanying materials | |
| 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 | |
| http://opensource.org/licenses/bsd-license.php | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| Module Name: MemoryAllocationLibInternals.h | |
| **/ | |
| #ifndef __PEI_MEMORY_ALLOCATION_LIB_INTERNALS_H__ | |
| #define __PEI_MEMORY_ALLOCATION_LIB_INTERNALS_H__ | |
| /** | |
| Allocates one or more 4KB pages of a certain memory type. | |
| Allocates the number of 4KB pages of a certain memory type and returns a pointer to the allocated | |
| buffer. The buffer returned is aligned on a 4KB boundary. If Pages is 0, then NULL is returned. | |
| If there is not enough memory remaining to satisfy the request, then NULL is returned. | |
| @param MemoryType The type of memory to allocate. | |
| @param Pages The number of 4 KB pages to allocate. | |
| @return A pointer to the allocated buffer or NULL if allocation fails. | |
| **/ | |
| VOID * | |
| InternalAllocatePages ( | |
| IN EFI_MEMORY_TYPE MemoryType, | |
| IN UINTN Pages | |
| ); | |
| /** | |
| Allocates one or more 4KB pages of a certain memory type at a specified alignment. | |
| Allocates the number of 4KB pages specified by Pages of a certain memory type with an alignment | |
| specified by Alignment. The allocated buffer is returned. If Pages is 0, then NULL is returned. | |
| If there is not enough memory at the specified alignment remaining to satisfy the request, then | |
| NULL is returned. | |
| If Alignment is not a power of two and Alignment is not zero, then ASSERT(). | |
| @param MemoryType The type of memory to allocate. | |
| @param Pages The number of 4 KB pages to allocate. | |
| @param Alignment The requested alignment of the allocation. Must be a power of two. | |
| If Alignment is zero, then byte alignment is used. | |
| @return A pointer to the allocated buffer or NULL if allocation fails. | |
| **/ | |
| VOID * | |
| InternalAllocateAlignedPages ( | |
| IN EFI_MEMORY_TYPE MemoryType, | |
| IN UINTN Pages, | |
| IN UINTN Alignment | |
| ); | |
| /** | |
| Allocates a buffer of a certain pool type. | |
| Allocates the number bytes specified by AllocationSize of a certain pool type and returns a | |
| pointer to the allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is | |
| returned. If there is not enough memory remaining to satisfy the request, then NULL is returned. | |
| @param MemoryType The type of memory to allocate. | |
| @param AllocationSize The number of bytes to allocate. | |
| @return A pointer to the allocated buffer or NULL if allocation fails. | |
| **/ | |
| VOID * | |
| InternalAllocatePool ( | |
| IN EFI_MEMORY_TYPE MemoryType, | |
| IN UINTN AllocationSize | |
| ); | |
| /** | |
| Allocates and zeros a buffer of a certian pool type. | |
| Allocates the number bytes specified by AllocationSize of a certian pool type, clears the buffer | |
| with zeros, and returns a pointer to the allocated buffer. If AllocationSize is 0, then a valid | |
| buffer of 0 size is returned. If there is not enough memory remaining to satisfy the request, | |
| then NULL is returned. | |
| @param PoolType The type of memory to allocate. | |
| @param AllocationSize The number of bytes to allocate and zero. | |
| @return A pointer to the allocated buffer or NULL if allocation fails. | |
| **/ | |
| VOID * | |
| InternalAllocateZeroPool ( | |
| IN EFI_MEMORY_TYPE PoolType, | |
| IN UINTN AllocationSize | |
| ); | |
| /** | |
| Copies a buffer to an allocated buffer of a certian pool type. | |
| Allocates the number bytes specified by AllocationSize of a certian pool type, copies | |
| AllocationSize bytes from Buffer to the newly allocated buffer, and returns a pointer to the | |
| allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is returned. If there | |
| is not enough memory remaining to satisfy the request, then NULL is returned. | |
| If Buffer is NULL, then ASSERT(). | |
| If AllocationSize is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). | |
| @param PoolType The type of pool to allocate. | |
| @param AllocationSize The number of bytes to allocate and zero. | |
| @param Buffer The buffer to copy to the allocated buffer. | |
| @return A pointer to the allocated buffer or NULL if allocation fails. | |
| **/ | |
| VOID * | |
| InternalAllocateCopyPool ( | |
| IN EFI_MEMORY_TYPE PoolType, | |
| IN UINTN AllocationSize, | |
| IN CONST VOID *Buffer | |
| ); | |
| /** | |
| Allocates a buffer of a certain pool type at a specified alignment. | |
| Allocates the number bytes specified by AllocationSize of a certain pool type with an alignment | |
| specified by Alignment. The allocated buffer is returned. If AllocationSize is 0, then a valid | |
| buffer of 0 size is returned. If there is not enough memory at the specified alignment remaining | |
| to satisfy the request, then NULL is returned. | |
| If Alignment is not a power of two and Alignment is not zero, then ASSERT(). | |
| @param PoolType The type of pool to allocate. | |
| @param AllocationSize The number of bytes to allocate. | |
| @param Alignment The requested alignment of the allocation. Must be a power of two. If Alignment is zero, then byte alignment is used. | |
| If Alignment is zero, then byte alignment is used. | |
| @return A pointer to the allocated buffer or NULL if allocation fails. | |
| **/ | |
| VOID * | |
| InternalAllocateAlignedPool ( | |
| IN EFI_MEMORY_TYPE PoolType, | |
| IN UINTN AllocationSize, | |
| IN UINTN Alignment | |
| ); | |
| /** | |
| Allocates and zeros a buffer of a certain pool type at a specified alignment. | |
| Allocates the number bytes specified by AllocationSize of a certain pool type with an alignment | |
| specified by Alignment, clears the buffer with zeros, and returns a pointer to the allocated | |
| buffer. If AllocationSize is 0, then a valid buffer of 0 size is returned. If there is not | |
| enough memory at the specified alignment remaining to satisfy the request, then NULL is returned. | |
| If Alignment is not a power of two and Alignment is not zero, then ASSERT(). | |
| @param PoolType The type of pool to allocate. | |
| @param AllocationSize The number of bytes to allocate. | |
| @param Alignment The requested alignment of the allocation. Must be a power of two. | |
| If Alignment is zero, then byte alignment is used. | |
| @return A pointer to the allocated buffer or NULL if allocation fails. | |
| **/ | |
| VOID * | |
| InternalAllocateAlignedZeroPool ( | |
| IN EFI_MEMORY_TYPE PoolType, | |
| IN UINTN AllocationSize, | |
| IN UINTN Alignment | |
| ); | |
| /** | |
| Copies a buffer to an allocated buffer of a certain pool type at a specified alignment. | |
| Allocates the number bytes specified by AllocationSize of a certain pool type with an alignment | |
| specified by Alignment. The allocated buffer is returned. If AllocationSize is 0, then a valid | |
| buffer of 0 size is returned. If there is not enough memory at the specified alignment remaining | |
| to satisfy the request, then NULL is returned. | |
| If Alignment is not a power of two and Alignment is not zero, then ASSERT(). | |
| @param PoolType The type of pool to allocate. | |
| @param AllocationSize The number of bytes to allocate. | |
| @param Buffer The buffer to copy to the allocated buffer. | |
| @param Alignment The requested alignment of the allocation. Must be a power of two. | |
| If Alignment is zero, then byte alignment is used. | |
| @return A pointer to the allocated buffer or NULL if allocation fails. | |
| **/ | |
| VOID * | |
| InternalAllocateAlignedCopyPool ( | |
| IN EFI_MEMORY_TYPE PoolType, | |
| IN UINTN AllocationSize, | |
| IN CONST VOID *Buffer, | |
| IN UINTN Alignment | |
| ); | |
| #endif |