comparison TaskManager/Fifo/FifoTaskManagerImpl.cc @ 853:fc521121ca8a

fix
author game@zeus.cr.ie.u-ryukyu.ac.jp
date Wed, 09 Jun 2010 10:33:24 +0900
parents dc3621ee7816
children 14fb1c888931
comparison
equal deleted inserted replaced
852:5389de58734f 853:fc521121ca8a
20 delete htaskImpl ; 20 delete htaskImpl ;
21 21
22 } 22 }
23 23
24 /** 24 /**
25 * FifoTaskManager 単独で走るときの初期化
25 * MailManager は PPE スケジューラとのメール交換、 26 * MailManager は PPE スケジューラとのメール交換、
26 * FifoScheduler は PPE 側のスケジューラ 27 * FifoScheduler は PPE 側のスケジューラ
27 * BufferManager は Task、TaskList などのメモリ管理(大層なことしてないが
28 */ 28 */
29 void 29 void
30 FifoTaskManagerImpl::init() 30 FifoTaskManagerImpl::init()
31 { 31 {
32 // TaskManager から呼ばれるので、かなりの部分は初期化されている。 32 // TaskManager から呼ばれるので、かなりの部分は初期化されている。
122 */ 122 */
123 void 123 void
124 FifoTaskManagerImpl::sendTaskList() 124 FifoTaskManagerImpl::sendTaskList()
125 { 125 {
126 if (taskListInfo->empty()) return; 126 if (taskListInfo->empty()) return;
127 // ppeTaskList は走り終わった ppe の Task の List.
128 // taskListInfo はこれから走る Task の List.
129 // 交換して実行する
127 TaskListInfoPtr tmp = ppeTaskList; 130 TaskListInfoPtr tmp = ppeTaskList;
128 ppeTaskList = taskListInfo; 131 ppeTaskList = taskListInfo;
129 taskListInfo = tmp; 132 taskListInfo = tmp;
133 // ppeTaskList は本来は循環リストなのだけど、実行中は線形リストである。
134 // なので、最後に 0 を代入する. 後でなおす。
130 ppeTaskList->getLast()->next = 0; 135 ppeTaskList->getLast()->next = 0;
131 // TaskList のアドレスを送る 136 // TaskList のアドレスを送る
132 mainScheduler->mail_write_from_host((memaddr)ppeTaskList->getFirst()); 137 mainScheduler->mail_write_from_host((memaddr)ppeTaskList->getFirst());
133 138
134 // EXIT_COMMAND (番兵的な意味で) 139 // EXIT_COMMAND (番兵的な意味で)
136 mainScheduler->mail_write_from_host((memaddr)MY_SPE_COMMAND_EXIT); 141 mainScheduler->mail_write_from_host((memaddr)MY_SPE_COMMAND_EXIT);
137 142
138 // scheduler は受け取ったメールを元に実行する 143 // scheduler は受け取ったメールを元に実行する
139 mainScheduler->run(new SchedNop()); 144 mainScheduler->run(new SchedNop());
140 // すべてのlistを実行するまで戻らない 145 // すべてのlistを実行するまで戻らない
146
147 ppeTaskList->getLast()->next = ppeTaskList;
148
141 } 149 }
142 150
143 /** 151 /**
144 * PPE Scheduler からのメールをチェックする 152 * PPE Scheduler からのメールをチェックする
145 * 153 *