#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");
if(size < 4096)
pages = 1.0;
else
pages = size / 4096.0;
tmp2 = NULL;
kprintf("Trying to allocate [%d] bytes\n", size);
for(p = 0.0 ; p < pages ; p += 1.0)
{
if(tmp2 != NULL)
tmp->Link = tmp2;
tmp = (mMap *)mmGetFreeVirtualPage(_current);
if(tmp == NULL)
kpanic("kmalloc: out of memory\n");
if(tmp2 == NULL)
retAddr = tmp->pageAddr;
tmp2 = tmp;
kprintf("retAddr = {%x} {%x} {%x}\n", retAddr, tmp->pageAddr, tmp->physicalAddr);
}
return (void *)retAddr;
}