Lines Matching defs:pHeap

41 static void *mmR3HeapAlloc(PMMHEAP pHeap, MMTAG enmTag, size_t cbSize, bool fZero);
54 PMMHEAP pHeap = (PMMHEAP)RTMemAllocZ(sizeof(MMHEAP) + sizeof(MMHEAPSTAT));
55 if (pHeap)
57 int rc = RTCritSectInit(&pHeap->Lock);
63 pHeap->pUVM = pUVM;
64 pHeap->Stat.pHeap = pHeap;
66 PMMHEAPSTAT pStat = &pHeap->Stat;
76 *ppHeap = pHeap;
80 RTMemFree(pHeap);
90 * @param pHeap Heap handle.
92 void mmR3HeapDestroy(PMMHEAP pHeap)
98 RTCritSectDelete(&pHeap->Lock);
103 PMMHEAPHDR pHdr = pHeap->pHead;
115 RTMemFree(pHeap);
138 Assert(pUVM->mm.s.pHeap);
139 return mmR3HeapAlloc(pUVM->mm.s.pHeap, enmTag, cbSize, false);
162 return mmR3HeapAlloc(pVM->pUVM->mm.s.pHeap, enmTag, cbSize, false);
179 Assert(pUVM->mm.s.pHeap);
180 void *pv = mmR3HeapAlloc(pUVM->mm.s.pHeap, enmTag, cbSize, false);
203 void *pv = mmR3HeapAlloc(pVM->pUVM->mm.s.pHeap, enmTag, cbSize, false);
225 return mmR3HeapAlloc(pUVM->mm.s.pHeap, enmTag, cbSize, true);
241 return mmR3HeapAlloc(pVM->pUVM->mm.s.pHeap, enmTag, cbSize, true);
258 Assert(pUVM->mm.s.pHeap);
259 void *pv = mmR3HeapAlloc(pUVM->mm.s.pHeap, enmTag, cbSize, true);
282 void *pv = mmR3HeapAlloc(pVM->pUVM->mm.s.pHeap, enmTag, cbSize, true);
296 * @param pHeap Heap handle.
303 void *mmR3HeapAlloc(PMMHEAP pHeap, MMTAG enmTag, size_t cbSize, bool fZero)
306 RTCritSectEnter(&pHeap->Lock);
311 pHeap->Stat.cAllocations++;
312 PMMHEAPSTAT pStat = (PMMHEAPSTAT)RTAvlULGet(&pHeap->pStatTree, (AVLULKEY)enmTag);
317 RTCritSectLeave(&pHeap->Lock);
324 pHeap->Stat.cFailures++;
326 RTCritSectLeave(&pHeap->Lock);
330 pStat->pHeap = pHeap;
331 RTAvlULInsert(&pHeap->pStatTree, &pStat->Core);
334 RTCritSectLeave(&pHeap->Lock);
337 PUVM pUVM = pHeap->pUVM;
355 RTCritSectEnter(&pHeap->Lock);
357 pHeap->Stat.cFailures++;
358 RTCritSectLeave(&pHeap->Lock);
372 RTCritSectEnter(&pHeap->Lock);
374 pHeap->Stat.cFailures++;
375 RTCritSectLeave(&pHeap->Lock);
381 RTCritSectEnter(&pHeap->Lock);
387 pHdr->pPrev = pHeap->pTail;
391 pHeap->pHead = pHdr;
392 pHeap->pTail = pHdr;
396 pHdr->pStat = &pHeap->Stat;
406 pHeap->Stat.cbAllocated += cbSize;
407 pHeap->Stat.cbCurAllocated += cbSize;
410 RTCritSectLeave(&pHeap->Lock);
453 PMMHEAP pHeap = pHdr->pStat->pHeap;
456 RTCritSectEnter(&pHeap->Lock);
458 pHeap->Stat.cReallocations++;
459 RTCritSectLeave(&pHeap->Lock);
470 RTCritSectEnter(&pHeap->Lock);
472 pHeap->Stat.cFailures++;
473 RTCritSectLeave(&pHeap->Lock);
483 RTCritSectEnter(&pHeap->Lock);
487 pHeap->pHead = pHdrNew;
492 pHeap->pTail = pHdrNew;
493 RTCritSectLeave(&pHeap->Lock);
500 RTCritSectEnter(&pHeap->Lock);
502 pHeap->Stat.cbAllocated += cbNewSize - pHdrNew->cbSize;
503 RTCritSectLeave(&pHeap->Lock);
662 PMMHEAP pHeap = pHdr->pStat->pHeap;
663 RTCritSectEnter(&pHeap->Lock);
667 pHeap->Stat.cFrees++;
669 pHeap->Stat.cbFreed += pHdr->cbSize;
671 pHeap->Stat.cbCurAllocated -= pHdr->cbSize;
680 pHeap->pHead = pHdr->pNext;
685 pHeap->pTail = pHdr->pPrev;
687 RTCritSectLeave(&pHeap->Lock);