Mercurial > hg > Members > kono > Cerium
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(); }