diff TaskManager/kernel/schedule/Scheduler.cc @ 871:ab3cd3aeacff

fix get segment dma tag zero problem
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 04 Jul 2010 16:56:04 +0900
parents daab9cd6f91f
children e49c1b29c43d
line wrap: on
line diff
--- a/TaskManager/kernel/schedule/Scheduler.cc	Tue Jun 29 04:23:52 2010 +0900
+++ b/TaskManager/kernel/schedule/Scheduler.cc	Sun Jul 04 16:56:04 2010 +0900
@@ -109,7 +109,6 @@
     return buff_taskList[buffFlag_taskList];
 }
 
-
 void
 Scheduler::dma_load(void *buf, memaddr addr, uint32 size, uint32 mask)
 {
@@ -154,6 +153,7 @@
 }
 
 
+
 /*
     ここから下は、memory 以下にあるべき
  */
@@ -214,6 +214,12 @@
 	m->code_segment_pool, 
 	task_list[task_id].end-task_list[task_id].location);
     task_list[task_id].segment = s;
+    // calcurate call address
+    TaskObjectRun run = 
+        (TaskObjectRun)(
+            (char*)task_list[task_id].segment->data +
+            task_list[task_id].entry_offset);
+    task_list[task_id].run = run;
 #if 0
     m->printf("loadng task id %d at 0x%x entry 0x%x\n",task_id,
 	    (unsigned int)(task_list[task_id].segment->data ),
@@ -240,15 +246,9 @@
 #endif
     // wait for code segment load
     m->wait_segment(task_list[task_id].segment);
-    // calcurate call address
-    TaskObjectRun run = 
-        (TaskObjectRun)(
-            (char*)task_list[task_id].segment->data +
-            task_list[task_id].entry_offset);
-    task_list[task_id].run = run;
 #if 0
     m->printf("wait load task id %d done. creator = 0x%x entry_offset = 0x%x\n",task_id,
-	(unsigned int)run,
+	(unsigned int)(task_list[task_id].run),
             task_list[task_id].entry_offset);
 #endif
 }