summaryrefslogtreecommitdiffstats
path: root/src/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/heapmgr.C7
-rw-r--r--src/kernel/kernel.C5
-rw-r--r--src/kernel/pagemgr.C5
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();
OpenPOWER on IntegriCloud