diff TaskManager/kernel/schedule/SchedTaskList.cc @ 717:4c12f679a0fa

TaskList load timing...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 18 Dec 2009 12:17:31 +0900
parents 8ab63ded2c3f
children 33630c6ff445
line wrap: on
line diff
--- a/TaskManager/kernel/schedule/SchedTaskList.cc	Wed Dec 16 18:04:26 2009 +0900
+++ b/TaskManager/kernel/schedule/SchedTaskList.cc	Fri Dec 18 12:17:31 2009 +0900
@@ -21,37 +21,40 @@
 
 SchedTaskList::SchedTaskList(memaddr addr, Scheduler *sched)
 {
+    // next() で生成された時に、Task List read を始める
     params_addr = addr;
-    list = NULL;
     scheduler = sched;
     cur_index = 0;
-
+    list = scheduler->get_curListBuf();
+    scheduler->dma_load(list, params_addr,
+                        sizeof(TaskList), DMA_READ_TASKLIST);
 }
 
 
 void
 SchedTaskList::read()
 {
+    // next() で TaskListの中身を見られてしまうので、
+    // ここで DMA 待ちを行う
     __debug("[SchedTaskList:%s]\n", __FUNCTION__);
-
-    list = scheduler->get_curListBuf();
-    scheduler->dma_load(list, params_addr,
-			sizeof(TaskList), DMA_READ_TASKLIST);
+    scheduler->dma_wait(DMA_READ_TASKLIST);
 }
 
 void
-SchedTaskList::exec() {}
+SchedTaskList::exec() {
+}
 
 void
 SchedTaskList::write()
 {
-    __debug("[SchedTaskList:%s]\n", __FUNCTION__);
-
-    scheduler->dma_wait(DMA_READ_TASKLIST);
 }
 
 /**
  *    next は、SchedTask のものが使われる。
+ *    それで正しく動くはず。
+ *
+ *    next() が呼ばれた時点で、TaskList のloadが終了しているように工夫する。
+ *
  */
 
 /* end */