#include <mm/vmm.h>
#include <ubixos/types.h>
#include <ubixos/kpanic.h>
#include <ubixos/sched.h>
void *kmalloc(size_t size)
{
mMap *tmp, *tmp2;
double pages, p;
uInt32 retAddr;
if(size <= 0)
kpanic("kmalloc: trying to allocate zero sized page\n");
pages = size / 4096.0;
tmp2 = NULL;
for(p = 1.0 ; p < pages ; p += 1.0)
{
if(tmp2 != NULL)
tmp->Link = (mMap *)tmp2;
tmp = (mMap *)mmGetFreeVirtualPage(_current);
if(tmp == NULL)
kpanic("kmalloc: out of memory\n");
if(tmp2 == NULL)
retAddr = tmp->pageAddr;
tmp2 = tmp;
}
return retAddr;
}