diff --git a/src/sys/Makefile b/src/sys/Makefile index 2343609..4591575 100644 --- a/src/sys/Makefile +++ b/src/sys/Makefile @@ -1,7 +1,10 @@ # $Id$ # Kernel Makefile (C) 2002 The UbixOS Project -all: net-code sde-code pci-code ufs-code mpi-code ubixfs-code vfs-code isa-code kernel-code lib-code vmm-code sys-code boot-code init-code devfs-code generic-code kmods-code kernel-img +all: net-code mm-code sde-code pci-code ufs-code mpi-code ubixfs-code vfs-code isa-code kernel-code lib-code vmm-code sys-code boot-code init-code devfs-code generic-code kmods-code kernel-img + +mm-code: mm + (cd mm;make) kmods-code: kmods (cd kmods;make) diff --git a/src/sys/include/vmm/vmm.h b/src/sys/include/vmm/vmm.h index 72ec33d..bd56c3d 100644 --- a/src/sys/include/vmm/vmm.h +++ b/src/sys/include/vmm/vmm.h @@ -32,6 +32,7 @@ #include #include +#include #define memAvail 1 #define memNotavail 2 @@ -71,6 +72,9 @@ /*** $Log$ + Revision 1.12 2005/08/10 09:47:41 fsdfs + updates + kmalloc() and kfree() stubs + Revision 1.11 2005/08/10 08:09:17 fsdfs the new memory management suite is located in sys/mm now. diff --git a/src/sys/mm/kfree.c b/src/sys/mm/kfree.c index 2d0746e..6f0e107 100644 --- a/src/sys/mm/kfree.c +++ b/src/sys/mm/kfree.c @@ -2,6 +2,6 @@ void kfree(void *ptr) { - mmFreeVirtualPage(_current, (uInt32)&(ptr)) + mmFreeVirtualPage(_current, (uInt32)&(ptr)); return; } diff --git a/src/sys/mm/memory.c b/src/sys/mm/memory.c index 23e2f2a..824c59f 100644 --- a/src/sys/mm/memory.c +++ b/src/sys/mm/memory.c @@ -29,11 +29,10 @@ } -/* TODO: free contiguous blocks of memory */ void mmFreeVirtualPage(kTask_t *task, uInt32 memAddr) { - mMap *tmp; + mMap *tmp, *tmp2; for(tmp = task->FirstPage ; tmp != NULL ; tmp = tmp->Next) { @@ -56,6 +55,17 @@ mmFreePages->Last->Next = tmp; tmp->Previous = mmFreePages->Last; mmFreePages->Last = tmp; + + /* free contiguous blocks */ + if(tmp->Link != NULL) + { + kprintf("Freeing contiguous memory\n"); + for(tmp2 = tmp->Link ; tmp2 != NULL ; tmp2 = tmp2->Link) + { + //TODO + } + } + kprintf("mmFreeVirtualPage: %d has been freed\n", memAddr); return; }