Lines Matching refs:pBlock

69 static void hgsmiMABlockFree(HGSMIMADATA *pMA, HGSMIMABLOCK *pBlock)
71 pMA->env.pfnFree(pMA->env.pvEnv, pBlock);
78 HGSMIMABLOCK *pBlock = (HGSMIMABLOCK *)pMA->env.pfnAlloc(pMA->env.pvEnv, sizeof(HGSMIMABLOCK));
79 if (pBlock)
81 RT_ZERO(pBlock->nodeBlock);
82 *ppBlock = pBlock;
122 HGSMIMABLOCK *pBlock;
123 rc = hgsmiMABlockAlloc(pMA, &pBlock);
129 pBlock->descriptor = hgsmiMADescriptor(off, true, order);
130 RTListAppend(&pMA->listBlocks, &pBlock->nodeBlock);
190 HGSMIMABLOCK *pBlock;
191 rc = hgsmiMABlockAlloc(pMA, &pBlock);
197 pBlock->descriptor = paDescriptors[i];
198 RTListAppend(&pMA->listBlocks, &pBlock->nodeBlock);
210 HGSMIMABLOCK *pBlock = NULL;
215 pBlock = RTListGetFirst(&pMA->aListFreeBlocks[i], HGSMIMABLOCK, nodeFree);
216 if (pBlock)
222 if (pBlock)
224 AssertReturn(HGSMI_MA_DESC_IS_FREE(pBlock->descriptor), NULL);
227 HGSMIOFFSET off = HGSMI_MA_DESC_OFFSET(pBlock->descriptor);
237 pBlock = NULL;
245 RTListNodeRemove(&pBlock->nodeFree);
247 pBlock->descriptor = hgsmiMADescriptor(off, true, i);
250 /* Update list of all blocks by inserting pBlock2 after pBlock. */
251 RTListNodeInsertAfter(&pBlock->nodeBlock, &pBlock2->nodeBlock);
255 RTListAppend(&pMA->aListFreeBlocks[i], &pBlock->nodeFree);
260 return pBlock;
284 HGSMIMABLOCK *pBlock = pStart;
297 if (pBlock == pEnd)
306 RTListNodeRemove(&pBlock->nodeFree);
308 pBlock->descriptor = hgsmiMADescriptor(off, true, order);
310 RTListAppend(&pMA->aListFreeBlocks[order], &pBlock->nodeFree);
315 pBlock = RTListGetNext(&pMA->listBlocks, pBlock, HGSMIMABLOCK, nodeBlock);
331 /* Remove remaining free blocks from pBlock until pEnd */
334 bool fEnd = (pBlock == pEnd);
335 HGSMIMABLOCK *pNext = RTListGetNext(&pMA->listBlocks, pBlock, HGSMIMABLOCK, nodeBlock);
337 RTListNodeRemove(&pBlock->nodeFree);
338 RTListNodeRemove(&pBlock->nodeBlock);
341 hgsmiMABlockFree(pMA, pBlock);
348 pBlock = pNext;
353 static void hgsmiMAQueryFreeRange(HGSMIMADATA *pMA, HGSMIMABLOCK *pBlock, HGSMISIZE cbRequired,
356 Assert(HGSMI_MA_DESC_IS_FREE(pBlock->descriptor));
358 *pcbBlocks = HGSMIMAOrder2Size(HGSMI_MA_DESC_ORDER(pBlock->descriptor));
359 *ppStart = pBlock;
360 *ppEnd = pBlock;
465 HGSMIMABLOCK *pBlock = hgsmiMAGetFreeBlock(pMA, order);
466 if (RT_UNLIKELY(pBlock == NULL))
470 pBlock = hgsmiMAGetFreeBlock(pMA, order);
473 if (RT_LIKELY(pBlock != NULL))
475 RTListNodeRemove(&pBlock->nodeFree);
476 pBlock->descriptor &= ~HGSMI_MA_DESC_FREE_MASK;
477 return HGSMI_MA_DESC_OFFSET(pBlock->descriptor);
493 HGSMIMABLOCK *pBlock = HGSMIMASearchOffset(pMA, off);
494 if (pBlock)
496 if (HGSMI_MA_DESC_OFFSET(pBlock->descriptor) == off)
499 pBlock->descriptor |= HGSMI_MA_DESC_FREE_MASK;
500 RTListAppend(&pMA->aListFreeBlocks[HGSMI_MA_DESC_ORDER(pBlock->descriptor)], &pBlock->nodeFree);