diff TaskManager/Fifo/FifoTaskManagerImpl.cc @ 719:cafffff0f45a

clean up scheduler main loop
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 19 Dec 2009 10:34:43 +0900
parents f725c6455d19
children 2b167196cb27
line wrap: on
line diff
--- a/TaskManager/Fifo/FifoTaskManagerImpl.cc	Sat Dec 19 09:50:37 2009 +0900
+++ b/TaskManager/Fifo/FifoTaskManagerImpl.cc	Sat Dec 19 10:34:43 2009 +0900
@@ -27,14 +27,16 @@
 void
 FifoTaskManagerImpl::init()
 {
+    // TaskManager から呼ばれるので、かなりの部分は初期化されている。
+
     mainScheduler = new MainScheduler();
     mainScheduler->init(this);
     mainScheduler->id = 0;
     set_scheduler(mainScheduler);
 
     taskListImpl  = new TaskListInfo;
-    taskQueueImpl = new TaskQueueInfo;
-    htaskImpl     = new HTaskInfo();
+    // taskQueueImpl = new TaskQueueInfo;
+    // htaskImpl     = new HTaskInfo();
 
     mainTaskList = taskListImpl->create();
 
@@ -60,7 +62,7 @@
     taskListImpl  = tm-> taskListImpl  ;
     taskQueueImpl = tm-> taskQueueImpl ;
     htaskImpl     = tm-> htaskImpl     ;
-    waitTaskQueue     = NULL;   // mail_check で外から設定される
+    waitTaskQueue     = tm->waitTaskQueue;   
 
     mainTaskList = taskListImpl->create();
 
@@ -149,10 +151,8 @@
         schedule(list);
 
         // ppe scheduler からの mail を調べる
-        mail_check(waitTaskQueue);
+        mail_check();
 
-        // 依存関係を満たしたものは実行可能キューへ
-        wakeup_waitTask();
         list = get_runTaskList();
     } while (list);
 }
@@ -191,7 +191,7 @@
  *         NULL なら全てのタスクが実行終了したということ
  */
 void
-FifoTaskManagerImpl::mail_check(HTaskInfo *wait_queue)
+FifoTaskManagerImpl::mail_check()
 {
     while (mainScheduler->has_mail_from_host()) {
 	memaddr data = mainScheduler->mail_read_from_host();
@@ -206,7 +206,7 @@
 	    // 移されてから、wait_for されるという事態が起きることがある。
             HTaskPtr task = (HTaskPtr)data;
             task->post_func(schedTaskManager, task->post_arg1, task->post_arg2);
-            check_task_finish(task, wait_queue);
+            check_task_finish(task, waitTaskQueue);
         }
     }
 }