Newer
Older
ubixos / src / sys / mm / getfreepage.c
#include <ubixos/sched.h>
#include <mm/vmm.h>

void *
mmGetFreeVirtualPage(kTask_t *task)
{
	mMap *tmp;

	/* remove the first free entry from the free pages list */
	tmp = mmFreePages->First;
	freePages--;
	mmFreePages->First = mmFreePages->First->Next;
	mmFreePages->First->Previous = NULL;

	/* add the free entry to the task's pages list */
	usedPages++;
	tmp->Next = NULL;
	tmp->Previous = task->LastPage;
	task->LastPage = tmp;
	return tmp;
}