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 ;