diff TaskManager/kernel/ppe/TaskManagerImpl.cc @ 498:cb5ecfc5aaa3

double linked HTaskInfo/HTask
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 11 Oct 2009 11:46:41 +0900
parents 9d225ba0c34f
children eacbcdb23986
line wrap: on
line diff
--- a/TaskManager/kernel/ppe/TaskManagerImpl.cc	Sat Oct 10 21:05:55 2009 +0900
+++ b/TaskManager/kernel/ppe/TaskManagerImpl.cc	Sun Oct 11 11:46:41 2009 +0900
@@ -14,9 +14,10 @@
 
 TaskManagerImpl::TaskManagerImpl(int num)
     : machineNum(num) {
-    activeTaskQueue = new TaskQueueInfo();
-    waitTaskQueue = new TaskQueueInfo();
-    taskQueueImpl = new TaskQueueInfo();
+    activeTaskQueue = new HTaskInfo();
+    waitTaskQueue = new HTaskInfo();
+    htaskImpl = waitTaskQueue ;             // any HTaskInfo
+    taskQueueImpl = new TaskQueueInfo(); 
 }
 
 /**
@@ -38,8 +39,7 @@
     //   systask_finish->wait_for(systask_finish);
     // とかなって無限ループになるので、
     // これだけは明示的に append_waitTask() で
-    TaskQueuePtr q = taskQueueImpl->create(systask_finish);
-    append_waitTask(q);
+    append_waitTask(systask_start);
 }
 
 HTaskPtr
@@ -82,11 +82,10 @@
 {
     // waiter // master
     // waitee // slave
-    TaskQueuePtr q = taskQueueImpl->create(task);
     if (task->wait_i->empty()) {
-        append_activeTask(q);
+        append_activeTask(task);
     } else {
-        append_waitTask(q);
+        append_waitTask(task);
     }
 
     systask_finish->wait_for(task);
@@ -96,7 +95,7 @@
  * Task を実行可能キューに追加する
  */
 void
-TaskManagerImpl::append_activeTask(TaskQueuePtr q)
+TaskManagerImpl::append_activeTask(HTaskPtr q)
 {
     activeTaskQueue->addLast(q);
 }
@@ -131,20 +130,20 @@
 	wait_i->free_(p->waiter);
 
 	if (wait_i->empty()) {
-	    waitTaskQueue->remove(you->self);
-	    append_activeTask(you->self);
+	    waitTaskQueue->remove((HTaskPtr)you->task);
+	    append_activeTask((HTaskPtr)you->task);
 	}
 
 	wait_i->free_(p);
     }
 
     me->post_func(me->post_arg);
-    htaskImpl->free(me);
+    htaskImpl->free_(me);
 }
 
 
 void
-TaskManagerImpl::append_waitTask(TaskQueuePtr q)
+TaskManagerImpl::append_waitTask(HTaskPtr q)
 {
     waitTaskQueue ->addLast(q);
 }