diff TaskManager/kernel/schedule/SchedTask.cc @ 403:8611780d479f

clean up and add more info on task_list
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 23 Sep 2009 12:04:29 +0900
parents 8c5fa57128cb
children cd77224d4224
line wrap: on
line diff
--- a/TaskManager/kernel/schedule/SchedTask.cc	Mon Sep 21 20:00:12 2009 +0900
+++ b/TaskManager/kernel/schedule/SchedTask.cc	Wed Sep 23 12:04:29 2009 +0900
@@ -12,9 +12,9 @@
 //#define NO_PIPELINE
 
 SchedTask *
-createSchedTask(TaskPtr task)
+createSchedTask(Scheduler *scheduler, TaskPtr task)
 {
-    return task_list[task->command]();
+    return task_list[task->command].creator(scheduler);
 }
 
 
@@ -49,7 +49,7 @@
  * Scheduler の持つ、使い回しの buffer ではなく
  * 新たに allocate されたものなので、ここで free する
  */
-SchedTask::~SchedTask(void)
+SchedTask::~SchedTask()
 {
     if (__flag_renewTask == SCHED_TASK_RENEW) {
         free(__inListData);
@@ -73,7 +73,7 @@
  * このタスクを Renew Task とし、それに応じた関数をセットする
  */
 void
-SchedTask::__setRenew(void)
+SchedTask::__setRenew()
 {
     __flag_renewTask = SCHED_TASK_RENEW;
 
@@ -95,8 +95,6 @@
     __scheduler   = sc;
     __cur_index   = index;
 
-    smanager = this;
-
     __scheduler->mainMem_wait();
 
     (this->*ex_init)();
@@ -106,7 +104,7 @@
  * PPE 内で生成されたタスクの ex_init()
  */
 void
-SchedTask::ex_init_normal(void)
+SchedTask::ex_init_normal()
 {
     __scheduler->dma_load(__inListData, (uint32)__task->inData,
                           sizeof(ListData), DMA_READ_IN_LIST);
@@ -127,7 +125,7 @@
  * ex_init_normal() と違い、ここでは値を渡すだけ
  */
 void
-SchedTask::ex_init_renew(void)
+SchedTask::ex_init_renew()
 {
     __inListData = __task->inData;
     __outListData = __task->outData;
@@ -144,7 +142,7 @@
  *   # もちろん管理はユーザに任せるわけだ。
  */
 void
-SchedTask::read(void)
+SchedTask::read()
 {
     __debug("[SchedTask:%s]\n", __FUNCTION__);
 
@@ -170,7 +168,7 @@
 }
 
 void
-SchedTask::exec(void)
+SchedTask::exec()
 {
     __debug("[SchedTask:%s]\n", __FUNCTION__);
 
@@ -205,7 +203,7 @@
 }
 
 void
-SchedTask::write(void)
+SchedTask::write()
 {
     __debug("[SchedTask:%s]\n", __FUNCTION__);
 
@@ -223,7 +221,7 @@
  * PPE 内で生成されたタスクの ex_read()
  */
 void
-SchedTask::ex_read_normal(void)
+SchedTask::ex_read_normal()
 {
 }
 
@@ -231,7 +229,7 @@
  * SPE 内で生成されたタスクの ex_read()
  */
 void
-SchedTask::ex_read_renew(void)
+SchedTask::ex_read_renew()
 {
 }
 
@@ -239,7 +237,7 @@
  * PPE 内で生成されたタスクの ex_exec()
  */
 void
-SchedTask::ex_exec_normal(void)
+SchedTask::ex_exec_normal()
 {
 }
 
@@ -247,7 +245,7 @@
  * SPE 内で生成されたタスクの ex_exec()
  */
 void
-SchedTask::ex_exec_renew(void)
+SchedTask::ex_exec_renew()
 {
 }
 
@@ -261,7 +259,7 @@
  * PPE に終了したことは知らせない(command は送信しない)
  */
 void
-SchedTask::ex_write_normal(void)
+SchedTask::ex_write_normal()
 {
     /**
      * このタスク内で新たにタスクが生成されなかった
@@ -285,7 +283,7 @@
  * PPE に mail 送信する。
  */
 void
-SchedTask::ex_write_renew(void)
+SchedTask::ex_write_renew()
 {
     uint32 cmd;
 
@@ -300,7 +298,7 @@
 }
 
 SchedTaskBase*
-SchedTask::next(Scheduler *m, SchedTaskBase *p)
+SchedTask::next(Scheduler *scheduler, SchedTaskBase *p)
 {
     __debug("[SchedTask:%s]\n", __FUNCTION__);
 
@@ -310,7 +308,7 @@
 }
 
 SchedTaskBase*
-SchedTask::ex_next_normal(void)
+SchedTask::ex_next_normal()
 {
     if (__cur_index < __list->length) {
         SchedTaskBase *nextSched;
@@ -324,7 +322,7 @@
             return nextSched;
         } else {
             TaskPtr nextTask = &__list->tasks[__cur_index++];
-            nextSched = createSchedTask(nextTask);
+            nextSched = createSchedTask(__scheduler, nextTask);
             ((SchedTask*)nextSched)->__init__(__list, nextTask, __cur_index,
                                               __scheduler->get_curReadBuf(),
                                               __scheduler->get_curWriteBuf(),
@@ -347,14 +345,14 @@
  *
  */
 SchedTaskBase*
-SchedTask::ex_next_renew(void)
+SchedTask::ex_next_renew()
 {
     TaskPtr nextTask;
     SchedTask *nextSched;
 
     if (__cur_index < __list->length) {
         nextTask = &__list->tasks[__cur_index++];
-        nextSched = createSchedTask(nextTask);
+        nextSched = createSchedTask(__scheduler, nextTask);
 
         // RenewTaskList を実行中なので
         nextSched->__setRenew();
@@ -383,7 +381,7 @@
                 __cur_index = __scheduler->get_backupTaskListIndex();
 
                 nextTask = &nextList->tasks[__cur_index++];
-                nextSched = createSchedTask(nextTask);
+                nextSched = createSchedTask(__scheduler, nextTask);
 
                 nextSched->__init__(nextList, nextTask, __cur_index,
                                     __scheduler->get_curReadBuf(),
@@ -398,7 +396,7 @@
 }
 
 int
-SchedTask::get_cpuid(void)
+SchedTask::get_cpuid()
 {
     return __scheduler->id;
 }
@@ -538,7 +536,7 @@
 }
 
 void
-SchedTask::mainMem_wait(void) {
+SchedTask::mainMem_wait() {
     __scheduler->mainMem_wait();
 }