summaryrefslogtreecommitdiffstats
path: root/src/kernel/kernel.C
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2010-06-07 14:41:20 -0500
committerPatrick Williams <iawillia@us.ibm.com>2010-06-07 14:41:20 -0500
commit546a015f74fab0c4e359cf97f289ff26d6481844 (patch)
treebd2643a5d512af932090fb09748aea8aa8f61521 /src/kernel/kernel.C
parentcd86583d084a4227dbf6a7cca2934eaad2b060d1 (diff)
downloadblackbird-hostboot-546a015f74fab0c4e359cf97f289ff26d6481844.tar.gz
blackbird-hostboot-546a015f74fab0c4e359cf97f289ff26d6481844.zip
Create init process, fix scheduler bugs.
Diffstat (limited to 'src/kernel/kernel.C')
-rw-r--r--src/kernel/kernel.C17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/kernel/kernel.C b/src/kernel/kernel.C
index 148ffe0bf..b071d9999 100644
--- a/src/kernel/kernel.C
+++ b/src/kernel/kernel.C
@@ -4,10 +4,15 @@
#include <kernel/heapmgr.H>
#include <kernel/cpumgr.H>
#include <util/singleton.H>
+#include <kernel/cpu.H>
+#include <kernel/task.H>
+#include <kernel/scheduler.H>
+#include <kernel/taskmgr.H>
#include <stdlib.h>
extern "C" void kernel_dispatch_task();
+extern void init_main(void* unused);
class Kernel
{
@@ -15,6 +20,7 @@ class Kernel
void cppBootstrap();
void memBootstrap();
void cpuBootstrap();
+ void inittaskBootstrap();
protected:
Kernel() {};
@@ -29,8 +35,9 @@ int main()
kernel.memBootstrap();
kernel.cpuBootstrap();
- kernel_dispatch_task();
+ kernel.inittaskBootstrap();
+ kernel_dispatch_task(); // no return.
while(1);
return 0;
}
@@ -59,3 +66,11 @@ void Kernel::cpuBootstrap()
CpuManager::init();
}
+void Kernel::inittaskBootstrap()
+{
+ task_t * t = TaskManager::createTask(&init_main, NULL);
+ t->cpu = CpuManager::getCurrentCPU();
+ TaskManager::setCurrentTask(t);
+
+}
+
OpenPOWER on IntegriCloud