Mercurial > hg > Members > kono > Cerium
diff TaskManager/kernel/ppe/TaskManagerImpl.cc @ 220:29e338dbc280
fix
author | gongo@localhost.localdomain |
---|---|
date | Mon, 09 Feb 2009 21:58:45 +0900 |
parents | 44e3bf914155 |
children | 58fd16298954 |
line wrap: on
line diff
--- a/TaskManager/kernel/ppe/TaskManagerImpl.cc Mon Feb 09 00:12:40 2009 +0900 +++ b/TaskManager/kernel/ppe/TaskManagerImpl.cc Mon Feb 09 21:58:45 2009 +0900 @@ -4,7 +4,7 @@ #include "error.h" #include "../sys_task/SysTask.h" -//static HTaskPtr systask_start; +static HTaskPtr systask_start; static HTaskPtr systask_finish; void @@ -15,12 +15,25 @@ TaskManagerImpl::TaskManagerImpl(int num) : machineNum(num), activeTaskQueue(NULL), waitTaskQueue(NULL) {} +/** + * 一番最初に PPE で実行される systask_start + * 一番最後に、全てのタスクの終了を待つ systask_finish + * 番兵的な意味で実装 + */ void TaskManagerImpl::systask_init(void) { systask_register(); + systask_start = create_task(SYSTASK_START); systask_finish = create_task(SYSTASK_FINISH); + + systask_start->spawn(); + + // systask_finish で spawn すると + // systask_finish->wait_for(systask_finish); + // とかなって無限ループになるので、 + // これだけは明示的に append_waitTask() で append_waitTask(systask_finish); }