Mercurial > hg > Members > kono > Cerium
comparison TaskManager/kernel/ppe/TaskManagerImpl.cc @ 519:5c76db2a07fa
continue..
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 20 Oct 2009 20:34:47 +0900 |
parents | 125a72948e44 |
children | 47b61865ea8c |
comparison
equal
deleted
inserted
replaced
518:125a72948e44 | 519:5c76db2a07fa |
---|---|
32 { | 32 { |
33 systask_register(); | 33 systask_register(); |
34 | 34 |
35 schedTaskManager = new SchedTaskManager(this); | 35 schedTaskManager = new SchedTaskManager(this); |
36 | 36 |
37 systask_start = create_task(SYSTASK_START); | 37 systask_start = create_task(SYSTASK_START,0,0,0,0); |
38 systask_finish = create_task(SYSTASK_FINISH); | 38 systask_finish = create_task(SYSTASK_FINISH,0,0,0,0); |
39 | 39 |
40 systask_start->spawn(); | 40 spawn(systask_start); |
41 | 41 |
42 // systask_finish で spawn すると | 42 // systask_finish で spawn すると |
43 // systask_finish->wait_for(systask_finish); | 43 // systask_finish->wait_for(systask_finish); |
44 // とかなって無限ループになるので、 | 44 // とかなって無限ループになるので、 |
45 // これだけは明示的に append_waitTask() で | 45 // これだけは明示的に append_waitTask() で |
46 append_waitTask(systask_finish); | 46 append_waitTask(systask_finish); |
47 } | 47 } |
48 | 48 |
49 void * | |
50 TaskManagerImpl::get_rbuf() | |
51 { | |
52 return 0; | |
53 } | |
54 | |
55 void * | |
56 TaskManagerImpl::get_wbuf() | |
57 { | |
58 return 0; | |
59 } | |
60 | |
61 | |
49 HTaskPtr | 62 HTaskPtr |
50 TaskManagerImpl::create_task(int cmd) | 63 TaskManagerImpl::create_task(int cmd) |
51 { | 64 { |
52 HTaskPtr new_task; | 65 HTaskPtr new_task; |
53 | 66 |
54 new_task = htaskImpl->create(cmd); | 67 new_task = htaskImpl->create(cmd); |
55 new_task->post_func = noaction; | 68 new_task->post_func = noaction; |
56 new_task->mimpl = this; | 69 new_task->rbuf = get_rbuf(); |
70 new_task->wbuf = get_wbuf(); | |
57 | 71 |
58 return new_task; | 72 return new_task; |
59 } | 73 } |
74 | |
75 HTaskPtr | |
76 TaskManagerImpl::create_task(int cmd, void *read, int rsize, void *write, int wsize) | |
77 { | |
78 HTaskPtr new_task; | |
79 | |
80 new_task = htaskImpl->create(cmd); | |
81 new_task->post_func = noaction; | |
82 new_task->rbuf = read; | |
83 new_task->rsize = rsize; | |
84 new_task->wbuf = write; | |
85 new_task->wsize = wsize; | |
86 | |
87 return new_task; | |
88 } | |
89 | |
60 | 90 |
61 /** | 91 /** |
62 * タスクを実行可能キューまたは待機キューへ追加する。 | 92 * タスクを実行可能キューまたは待機キューへ追加する。 |
63 * 依存関係が満たされていれば active, まだだったら wait へ。 | 93 * 依存関係が満たされていれば active, まだだったら wait へ。 |
64 * task->spawn(); | 94 * task->spawn(); |
65 */ | 95 */ |
66 void | 96 void |
67 TaskManagerImpl::spawn_task(HTaskPtr task) | 97 TaskManagerImpl::spawn(HTask *task) |
68 { | 98 { |
69 // waiter // master | 99 // waiter // master |
70 // waitee // slave | 100 // waitee // slave |
71 if (task->wait_i->empty()) { | 101 if (task->wait_i->empty()) { |
72 append_activeTask(task); | 102 append_activeTask(task); |