#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 (void *)retAddr; }