Mercurial > hg > Members > kono > Cerium
diff TaskManager/kernel/schedule/SchedTask.cc @ 506:1d4a8a86f26b
code_load in read()
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 12 Oct 2009 02:50:01 +0900 |
parents | 36b323130b1b |
children | 125a72948e44 |
line wrap: on
line diff
--- a/TaskManager/kernel/schedule/SchedTask.cc Sun Oct 11 20:07:47 2009 +0900 +++ b/TaskManager/kernel/schedule/SchedTask.cc Mon Oct 12 02:50:01 2009 +0900 @@ -153,6 +153,34 @@ void SchedTask::read() { + __debug("[SchedTask:%s]\n", __FUNCTION__); + +#if 0 +#if !defined(NO_PIPELINE) + scheduler->dma_wait(DMA_READ_IN_LIST); + scheduler->dma_wait(DMA_READ_OUT_LIST); +#endif +#endif + // object creation をSchedTask生成時にやらないので、 + // exec の直前のread で十分に間に合う + if (cur_index < list->length) { + // load next task + loadSchedTask(scheduler, &list->tasks[cur_index]); + } + + writebuf = scheduler->allocate(outListData->size); + + // 読むデータが一つもなければ無視 + if (inListData->length == 0) return; + + // load Input Data + readbuf = scheduler->allocate(inListData->size); + scheduler->dma_loadList(inListData, readbuf, DMA_READ); + +#if defined(NO_PIPELINE) + scheduler->dma_wait(DMA_READ); +#endif + (this->*ex_read)(); } @@ -170,28 +198,6 @@ void SchedTask::ex_read_normal() { - __debug("[SchedTask:%s]\n", __FUNCTION__); - -#if 0 -#if !defined(NO_PIPELINE) - scheduler->dma_wait(DMA_READ_IN_LIST); - scheduler->dma_wait(DMA_READ_OUT_LIST); -#endif -#endif - - writebuf = scheduler->allocate(outListData->size); - - // 読むデータが一つもなければ無視 - if (inListData->length == 0) return; - - // load Input Data - readbuf = scheduler->allocate(inListData->size); - scheduler->dma_loadList(inListData, readbuf, DMA_READ); - -#if defined(NO_PIPELINE) - scheduler->dma_wait(DMA_READ); -#endif - } void @@ -342,10 +348,6 @@ return nextSched; } else { TaskPtr nextTask = &list->tasks[cur_index++]; - if (cur_index < list->length) { - // load next task - loadSchedTask(scheduler, &list->tasks[cur_index]); - } nextSched = createSchedTask(scheduler, nextTask); ((SchedTask*)nextSched)->init(list, nextTask, cur_index, // scheduler->get_curReadBuf(), @@ -376,10 +378,6 @@ if (cur_index < list->length) { nextTask = &list->tasks[cur_index++]; - if (cur_index < list->length) { - // load next task - loadSchedTask(scheduler, &list->tasks[cur_index]); - } nextSched = createSchedTask(scheduler, nextTask); // RenewTaskList を実行中なので @@ -409,10 +407,6 @@ cur_index = scheduler->get_backupTaskListIndex(); nextTask = &nextList->tasks[cur_index++]; - if (cur_index < list->length) { - // load next task - loadSchedTask(scheduler, &list->tasks[cur_index]); - } nextSched = createSchedTask(scheduler, nextTask); nextSched->init(nextList, nextTask, cur_index,