diff TaskManager/kernel/schedule/Scheduler.cc @ 872:e49c1b29c43d

add overlay segment
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 04 Jul 2010 17:59:53 +0900
parents ab3cd3aeacff
children 3b9536925fb8
line wrap: on
line diff
--- a/TaskManager/kernel/schedule/Scheduler.cc	Sun Jul 04 16:56:04 2010 +0900
+++ b/TaskManager/kernel/schedule/Scheduler.cc	Sun Jul 04 17:59:53 2010 +0900
@@ -200,10 +200,18 @@
  *  Task load API
  */
 void
-Scheduler::allocate_code_segment(int size, int count)
+Scheduler::allocate_code_segment(int size, int count, struct tbl *table)
 {
     // 既に overlay 領域があるので、それを追加する必要がある...
     code_segment_pool = createMemList(size, count);
+    if (table) {
+        MemorySegment* here = (MemorySegment*)(
+	     manager->allocate(sizeof(MemorySegment)));
+        here->data = (void*)(table->vma);
+        here->size = size;
+	here->address = (memaddr)here;
+	code_segment_pool->addLast(here);
+    }
 }
 
 static void
@@ -220,7 +228,7 @@
             (char*)task_list[task_id].segment->data +
             task_list[task_id].entry_offset);
     task_list[task_id].run = run;
-#if 0
+#if 1
     m->printf("loadng task id %d at 0x%x entry 0x%x\n",task_id,
 	    (unsigned int)(task_list[task_id].segment->data ),
 	    (unsigned int)(