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);