Mercurial > hg > Members > kono > Cerium
diff TaskManager/kernel/ppe/TaskManagerImpl.cc @ 830:c7905ead974f
return TaskList->self
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 25 May 2010 17:28:05 +0900 |
parents | 76a39ad68846 |
children | 65e9eab53f50 |
line wrap: on
line diff
--- a/TaskManager/kernel/ppe/TaskManagerImpl.cc Tue May 25 03:41:10 2010 +0900 +++ b/TaskManager/kernel/ppe/TaskManagerImpl.cc Tue May 25 17:28:05 2010 +0900 @@ -143,7 +143,7 @@ } /** - * 終了したタスクから依存の処理とか + * @brief 終了したタスクから依存の処理とか * post_func() はこのタスクが終了したら実行する関数。 * * @param [task] 終了したタスク @@ -171,13 +171,44 @@ htaskImpl->free_(me); } +/** + * @brief 終了したタスクリストの依存の処理 + * @param [task] 終了したタスク + */ +void +TaskManagerImpl::check_task_list_finish(SchedTask *s, TaskListPtr list, HTaskInfo *wait_queue) +{ + for(int i = 0;i<list->length;i++) { + SimpleTaskPtr task = &list->tasks[list->length++]; + HTask *me = (HTask*)task->self; + me->post_func(s, me->post_arg1, me->post_arg2); + if (task->command==TaskArray1) { + int next = (task->r_size)/sizeof(SimpleTask); + // assert(next<list->length); + i+=next; + } + check_task_finish(me, wait_queue); + } +} +/** + * @brief waitTaskqueue への挿入 。必須ではない。 + * 現状では、dead lock 検出にしか使ってない + * + * @param [task] 終了したタスク + */ void TaskManagerImpl::append_waitTask(HTaskPtr q) { waitTaskQueue ->addLast(q); } +/** + @brief htask を DMA でCPUに渡すための TaskList に入れる (copy) + @param htask + @param taskList + TaskList は自動的に延長される + */ void TaskManagerImpl::set_taskList(HTaskPtr htask, TaskListInfoPtr taskList) { TaskListPtr list ;