diff options
Diffstat (limited to 'src/kernel')
-rw-r--r-- | src/kernel/heapmgr.C | 7 | ||||
-rw-r--r-- | src/kernel/kernel.C | 5 | ||||
-rw-r--r-- | src/kernel/pagemgr.C | 5 |
3 files changed, 15 insertions, 2 deletions
diff --git a/src/kernel/heapmgr.C b/src/kernel/heapmgr.C index 43a9cd23c..b6e47140c 100644 --- a/src/kernel/heapmgr.C +++ b/src/kernel/heapmgr.C @@ -3,6 +3,11 @@ #include <kernel/console.H> #include <kernel/pagemgr.H> +void HeapManager::init() +{ + Singleton<HeapManager>::instance(); +} + void* HeapManager::allocate(size_t n) { HeapManager& hmgr = Singleton<HeapManager>::instance(); @@ -37,7 +42,7 @@ void HeapManager::_free(void* p) { if (NULL == p) return; - chunk_t* chunk = (chunk_t*)((size_t*)p)-1; + chunk_t* chunk = (chunk_t*)(((size_t*)p)-1); push_bucket(chunk, chunk->len); } diff --git a/src/kernel/kernel.C b/src/kernel/kernel.C index 2872c398f..cba5d231c 100644 --- a/src/kernel/kernel.C +++ b/src/kernel/kernel.C @@ -4,6 +4,8 @@ #include <kernel/heapmgr.H> #include <util/singleton.H> +#include <stdlib.h> + class Kernel { public: @@ -41,6 +43,7 @@ void Kernel::cppBootstrap() void Kernel::memBootstrap() { - PageManager::freePage(PageManager::allocatePage()); + PageManager::init(); + HeapManager::init(); } diff --git a/src/kernel/pagemgr.C b/src/kernel/pagemgr.C index 400ad118b..a184ee23f 100644 --- a/src/kernel/pagemgr.C +++ b/src/kernel/pagemgr.C @@ -2,6 +2,11 @@ #include <util/singleton.H> #include <kernel/console.H> +void PageManager::init() +{ + Singleton<PageManager>::instance(); +} + void* PageManager::allocatePage(size_t n) { PageManager& pmgr = Singleton<PageManager>::instance(); |