Mercurial > hg > Members > kono > Cerium
comparison 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 |
comparison
equal
deleted
inserted
replaced
219:0f1ff7b06157 | 220:29e338dbc280 |
---|---|
2 #include "TaskManagerImpl.h" | 2 #include "TaskManagerImpl.h" |
3 #include "types.h" | 3 #include "types.h" |
4 #include "error.h" | 4 #include "error.h" |
5 #include "../sys_task/SysTask.h" | 5 #include "../sys_task/SysTask.h" |
6 | 6 |
7 //static HTaskPtr systask_start; | 7 static HTaskPtr systask_start; |
8 static HTaskPtr systask_finish; | 8 static HTaskPtr systask_finish; |
9 | 9 |
10 void | 10 void |
11 noaction(void *p) | 11 noaction(void *p) |
12 { | 12 { |
13 } | 13 } |
14 | 14 |
15 TaskManagerImpl::TaskManagerImpl(int num) | 15 TaskManagerImpl::TaskManagerImpl(int num) |
16 : machineNum(num), activeTaskQueue(NULL), waitTaskQueue(NULL) {} | 16 : machineNum(num), activeTaskQueue(NULL), waitTaskQueue(NULL) {} |
17 | 17 |
18 /** | |
19 * 一番最初に PPE で実行される systask_start | |
20 * 一番最後に、全てのタスクの終了を待つ systask_finish | |
21 * 番兵的な意味で実装 | |
22 */ | |
18 void | 23 void |
19 TaskManagerImpl::systask_init(void) | 24 TaskManagerImpl::systask_init(void) |
20 { | 25 { |
21 systask_register(); | 26 systask_register(); |
22 | 27 |
28 systask_start = create_task(SYSTASK_START); | |
23 systask_finish = create_task(SYSTASK_FINISH); | 29 systask_finish = create_task(SYSTASK_FINISH); |
30 | |
31 systask_start->spawn(); | |
32 | |
33 // systask_finish で spawn すると | |
34 // systask_finish->wait_for(systask_finish); | |
35 // とかなって無限ループになるので、 | |
36 // これだけは明示的に append_waitTask() で | |
24 append_waitTask(systask_finish); | 37 append_waitTask(systask_finish); |
25 } | 38 } |
26 | 39 |
27 HTaskPtr | 40 HTaskPtr |
28 TaskManagerImpl::create_task(int cmd) | 41 TaskManagerImpl::create_task(int cmd) |