Lines Matching defs:cPages

129     size_t          cPages;
241 * @param cPages The number of pages.
245 DECLINLINE(int) rtHeapPageAllocFromBlockSuccess(PRTHEAPPAGEBLOCK pBlock, uint32_t iPage, size_t cPages, bool fZero, void **ppv)
250 pBlock->cFreePages -= cPages;
251 pHeap->cFreePages -= cPages;
259 RT_BZERO(pv, cPages << PAGE_SHIFT);
271 * @param cPages The number of pages to check.
273 DECLINLINE(bool) rtHeapPageIsPageRangeFree(PRTHEAPPAGEBLOCK pBlock, uint32_t iFirst, uint32_t cPages)
275 uint32_t i = iFirst + cPages;
292 * @param cPages The size of the allocation.
296 DECLINLINE(int) rtHeapPageAllocFromBlock(PRTHEAPPAGEBLOCK pBlock, size_t cPages, bool fZero, void **ppv)
298 if (pBlock->cFreePages >= cPages)
304 if (cPages == 1)
307 return rtHeapPageAllocFromBlockSuccess(pBlock, iPage, cPages, fZero, ppv);
311 && (unsigned)iPage <= RTMEMPAGEPOSIX_BLOCK_PAGE_COUNT - cPages)
313 if (rtHeapPageIsPageRangeFree(pBlock, iPage + 1, cPages - 1))
315 ASMBitSetRange(&pBlock->bmAlloc[0], iPage, iPage + cPages);
316 return rtHeapPageAllocFromBlockSuccess(pBlock, iPage, cPages, fZero, ppv);
342 int rc = rtHeapPageAllocFromBlock(pBlock, pArgs->cPages, pArgs->fZero, &pArgs->pvAlloc);
352 * @param cPages The page count.
358 static int rtHeapPageAllocLocked(PRTHEAPPAGE pHeap, size_t cPages, const char *pszTag, bool fZero, void **ppv)
368 rc = rtHeapPageAllocFromBlock(pHeap->pHint1, cPages, fZero, ppv);
374 rc = rtHeapPageAllocFromBlock(pHeap->pHint2, cPages, fZero, ppv);
385 if (pHeap->cFreePages >= cPages)
388 Args.cPages = cPages;
444 rc = rtHeapPageAllocFromBlock(pBlock, cPages, fZero, ppv);
456 * @param cPages The number of pages to allocate.
461 int RTHeapPageAlloc(PRTHEAPPAGE pHeap, size_t cPages, const char *pszTag, bool fZero, void **ppv)
470 AssertMsgReturn(cPages < RTMEMPAGEPOSIX_BLOCK_SIZE, ("%#zx\n", cPages), VERR_OUT_OF_RANGE);
478 rc = rtHeapPageAllocLocked(pHeap, cPages, pszTag, fZero, ppv);
512 * @param cPages The number of pages that was allocated.
514 int RTHeapPageFree(PRTHEAPPAGE pHeap, void *pv, size_t cPages)
538 bool fOk = iPage + cPages <= RTMEMPAGEPOSIX_BLOCK_PAGE_COUNT;
542 fOk = fOk && ( iPage + cPages == RTMEMPAGEPOSIX_BLOCK_PAGE_COUNT
543 || ASMBitTest(&pBlock->bmFirst[0], iPage + cPages)
544 || !ASMBitTest(&pBlock->bmAlloc[0], iPage + cPages));
546 uint32_t const iLastPage = iPage + cPages - 1;
555 ASMBitClearRange(&pBlock->bmAlloc[0], iPage, iPage + cPages);
557 pBlock->cFreePages += cPages;
558 pHeap->cFreePages += cPages;