ZealOS/src/Kernel/Memory/HeapCtrl.CC
TomAwezome 7e0ce60071 Reformatted Kernel files in Memory subdirectory.
Reformatted BlkPool.CC, HeapCtrl.CC, MAllocFree.CC, MemPag.CC, MemPhysical.CC, PageTables.CC.
2020-09-14 21:55:57 -04:00

37 lines
845 B
HolyC
Executable file

CHeapCtrl *HeapCtrlInit(CHeapCtrl *hc=NULL, CTask *task=NULL, CBlkPool *bp)
{//See $LK,"HeapLog",A="MN:HeapLog"$() for an example.
//Duplicated for $LK,"Zenith Task",A="FF:::/Kernel/KStart64.CC,CHeapCtrl.bp"$.
if (!hc)
hc = ZCAlloc(sizeof(CHeapCtrl));
hc->hc_signature = HEAP_CTRL_SIGNATURE_VAL;
hc->mem_task = task;
hc->bp = bp;
QueueInit(&hc->next_mem_blk);
hc->last_mergable = NULL;
hc->next_um = hc->last_um = (&hc->next_um)(U8 *) - offset(CMemUsed.next);
return hc;
}
U0 HeapCtrlDel(CHeapCtrl *hc)
{//Free all blks alloced to a HeapCtrl.
CMemBlk *m, *m1;
if (hc)
{
PUSHFD
CLI
while (LBts(&hc->locked_flags, HClf_LOCKED))
PAUSE
m = hc->next_mem_blk;
while (m != &hc->next_mem_blk)
{
m1 = m->next;
MemPagTaskFree(m, hc);
m = m1;
}
LBtr(&hc->locked_flags, HClf_LOCKED);
POPFD
Free(hc);
}
}