Mercurial > hg > Members > kono > Cerium
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); } } }