Home | History | Annotate | Download | only in SdBlockIoPei

Lines Matching defs:Block

19   Allocate a block of memory to be used by the buffer pool.

23 @return The allocated memory block or NULL if failed.
31 SD_PEIM_MEM_BLOCK *Block;
37 Block = NULL;
48 // bytes of memory in the memory block.
52 Block = (SD_PEIM_MEM_BLOCK*)(UINTN)TempPtr;
53 Block->BufLen = EFI_PAGES_TO_SIZE (Pages);
54 Block->BitsLen = Block->BufLen / (SD_PEIM_MEM_UNIT * 8);
56 Status = PeiServicesAllocatePool (Block->BitsLen, &TempPtr);
61 ZeroMem ((VOID*)(UINTN)TempPtr, Block->BitsLen);
63 Block->Bits = (UINT8*)(UINTN)TempPtr;
76 Block->Buf = (UINT8*)((UINTN)Address);
77 Block->Next = NULL;
79 return Block;
83 Free the memory block from the memory pool.
85 @param Pool The memory pool to free the block from.
86 @param Block The memory block to free.
92 IN SD_PEIM_MEM_BLOCK *Block
95 ASSERT ((Pool != NULL) && (Block != NULL));
99 Alloc some memory from the block.
101 @param Block The memory block to allocate memory from.
110 IN SD_PEIM_MEM_BLOCK *Block,
121 ASSERT ((Block != 0) && (Units != 0));
127 for (Byte = 0, Bit = 0; Byte < Block->BitsLen;) {
133 if (!SD_PEIM_MEM_BIT_IS_SET (Block->Bits[Byte], Bit)) {
162 ASSERT (!SD_PEIM_MEM_BIT_IS_SET (Block->Bits[Byte], Bit));
164 Block->Bits[Byte] = (UINT8) (Block->Bits[Byte] | (UINT8) SD_PEIM_MEM_BIT (Bit));
168 return Block->Buf + (StartByte * 8 + StartBit) * SD_PEIM_MEM_UNIT;
172 Insert the memory block to the pool's list of the blocks.
174 @param Head The head of the memory pool's block list.
175 @param Block The memory block to insert.
181 IN SD_PEIM_MEM_BLOCK *Block
184 ASSERT ((Head != NULL) && (Block != NULL));
185 Block->Next = Head->Next;
186 Head->Next = Block;
190 Is the memory block empty?
192 @param Block The memory block to check.
194 @retval TRUE The memory block is empty.
195 @retval FALSE The memory block isn't empty.
200 IN SD_PEIM_MEM_BLOCK *Block
206 for (Index = 0; Index < Block->BitsLen; Index++) {
207 if (Block->Bits[Index] != 0) {
216 Unlink the memory block from the pool's list.
218 @param Head The block list head of the memory's pool.
219 @param BlockToUnlink The memory block to unlink.
228 SD_PEIM_MEM_BLOCK *Block;
232 for (Block = Head; Block != NULL; Block = Block->Next) {
233 if (Block->Next == BlockToUnlink) {
234 Block->Next = BlockToUnlink->Next;
295 SD_PEIM_MEM_BLOCK *Block;
302 // first block.
304 for (Block = Pool->Head->Next; Block != NULL; Block = Pool->Head->Next) {
305 SdPeimFreeMemBlock (Pool, Block);
330 SD_PEIM_MEM_BLOCK *Block;
344 for (Block = Head; Block != NULL; Block = Block->Next) {
345 Mem = SdPeimAllocMemFromBlock (Block, AllocSize / SD_PEIM_MEM_UNIT);
358 // Create a new memory block if there is not enough memory
361 // block. Otherwise allocate default pages.
375 // Add the new memory block to the pool, then allocate memory from it
403 SD_PEIM_MEM_BLOCK *Block;
414 for (Block = Head; Block != NULL; Block = Block->Next) {
416 // scan the memory block list for the memory block that
419 if ((Block->Buf <= ToFree) && ((ToFree + AllocSize) <= (Block->Buf + Block->BufLen))) {
423 Byte = ((ToFree - Block->Buf) / SD_PEIM_MEM_UNIT) / 8;
424 Bit = ((ToFree - Block->Buf) / SD_PEIM_MEM_UNIT) % 8;
430 ASSERT (SD_PEIM_MEM_BIT_IS_SET (Block->Bits[Byte], Bit));
432 Block->Bits[Byte] = (UINT8) (Block->Bits[Byte] ^ SD_PEIM_MEM_BIT (Bit));
441 // If Block == NULL, it means that the current memory isn't
445 ASSERT (Block != NULL);
448 // Release the current memory block if it is empty and not the head
450 if ((Block != Head) && SdPeimIsMemBlockEmpty (Block)) {
451 SdPeimFreeMemBlock (Pool, Block);