diff TaskManager/Fifo/FifoTaskManagerImpl.cc @ 634:0558abba673c

SimpleTask start
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 18 Nov 2009 17:29:14 +0900
parents 60aa3f241b10
children 8cc609285bbe
line wrap: on
line diff
--- a/TaskManager/Fifo/FifoTaskManagerImpl.cc	Wed Nov 18 14:47:23 2009 +0900
+++ b/TaskManager/Fifo/FifoTaskManagerImpl.cc	Wed Nov 18 17:29:14 2009 +0900
@@ -85,7 +85,11 @@
 FifoTaskManagerImpl::get_runTaskList()
 {
     TaskListPtr list, list_top;
+#ifdef SIMPLE_TASK
     TaskPtr task; // Task (SPE に送る Task)
+#else
+    SimpleTaskPtr task; // Task (SPE に送る Task)
+#endif
 
     if (activeTaskQueue->empty()) {
         return NULL;
@@ -101,18 +105,16 @@
     // printf("active task queue length = %d\n",activeTaskQueue->length());
     while (HTaskPtr htask = activeTaskQueue->poll()) {
         task = &list->tasks[list->length++];
-	// inData, outData を内蔵にしたので実は、結構でかくない?
-	// 268 byte 程度だが... 不要な分(設定してない inData, outData, param 
-        // とかもコピーしてるね。rbuf/wbuf の意味を変えてしまったわけか。
+#ifdef SIMPLE_TASK
+	*task = *(SimpleTask*)htask;
+#else
         memcpy(task, (Task*)htask, sizeof(Task));
-
-
+#endif
         if (list->length >= TASK_MAX_SIZE) {
             TaskListPtr newList = taskListImpl->create();
             list_top = TaskListInfo::append(list_top, newList);
             list = newList;
         }
-
         // activeTaskQueue->free_(htask); ここで free しないで、
         // mail を待つ
     }
@@ -201,15 +203,6 @@
     while (q) {
         data = q->data;
 
-        /**
-         * MY_SPE_STATUS_READY: SPE が持ってた Task 全て終了
-         * MY_SPE_NOP: 特に意味のないコマンド
-         * それ以外:終了したタスク(PPEにあるのでアドレス
-         *
-         * MY_SPE_NOP が 0 なので、
-         * 下のように data > MY_SPE_NOP とかしています。
-         * 一目でよくわからない書き方なんで、直したいところですが。。。
-         */
         if (data == (memaddr)MY_SPE_STATUS_READY) {
             __debug_ppe("mail_check(): Task List finish\n");
         } else if (data != (memaddr)MY_SPE_NOP) {