Mercurial > hg > Members > kono > Cerium
diff TaskManager/Cell/CellTaskManagerImpl.cc @ 647:7c9ded1ea750
MailManager rewrite. not yet worked.
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 21 Nov 2009 16:18:47 +0900 |
parents | a909c50081c2 |
children | 7405d92733a8 |
line wrap: on
line diff
--- a/TaskManager/Cell/CellTaskManagerImpl.cc Sat Nov 21 11:20:29 2009 +0900 +++ b/TaskManager/Cell/CellTaskManagerImpl.cc Sat Nov 21 16:18:47 2009 +0900 @@ -135,7 +135,6 @@ CellTaskManagerImpl::run() { TaskListPtr ppeTaskList = NULL; - MailQueuePtr ppeMail = NULL; // PPE 側で動く TaskList です // FifoTaskManagerImpl::run と上手く合うように @@ -157,9 +156,9 @@ // どうかを調べる必要がある。 // do { - ppeMail = ppeManager->schedule(ppeTaskList); + ppeManager->schedule(ppeTaskList); cont: - ppeTaskList = mail_check(ppeMail); + ppeTaskList = mail_check(waitTaskQueue); } while (ppeTaskList || spe_running >0); } @@ -175,17 +174,17 @@ */ TaskListPtr -CellTaskManagerImpl::mail_check(MailQueuePtr mail_list) +CellTaskManagerImpl::mail_check(HTaskInfo *wait_queue) { // PPE Scheduler からの mail check - ppeManager->mail_check(mail_list, waitTaskQueue); + ppeManager->mail_check(waitTaskQueue); do { memaddr data; // SPE Scheduler からの mail check for (int id = 0; id < machineNum; id++) { - while (speThreads->check_mail(id, 1, &data)) { + while (speThreads->has_mail(id, 1, &data)) { /** * MY_SPE_STATUS_READY: SPE が持ってた Task 全て終了 * MY_SPE_NOP: 特に意味のないコマンド @@ -233,7 +232,7 @@ //__debug_ppe("[PPE] recv from [SPE %d] : 0x%x\n", id, data); HTaskPtr task = (HTaskPtr)data; task->post_func(schedTaskManager, task->post_arg1, task->post_arg2); - check_task_finish(task); + check_task_finish(task,waitTaskQueue); } } }