Mercurial > hg > Members > kono > Cerium
diff TaskManager/kernel/schedule/SchedTask.cc @ 972:d093d601fc14
fix
author | Yutaka Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 27 Aug 2010 06:39:16 +0900 |
parents | 33630c6ff445 |
children | 18a548c337cb |
line wrap: on
line diff
--- a/TaskManager/kernel/schedule/SchedTask.cc Thu Aug 26 20:40:08 2010 +0900 +++ b/TaskManager/kernel/schedule/SchedTask.cc Fri Aug 27 06:39:16 2010 +0900 @@ -39,12 +39,13 @@ } void -SchedTask::init(TaskListPtr _list, TaskPtr _task, int index, Scheduler* sc) +SchedTask::init(TaskListPtr _list, TaskPtr _task, int index, Scheduler* sc, int tag) { list = _list; task = _task; scheduler = sc; cur_index = index; + this->tag = tag; // scheduler->mainMem_wait(); // これはなんで? manager = sc->manager; @@ -73,7 +74,7 @@ if (task->r_size == 0) return; // load Input Data readbuf = manager->allocate(task->r_size); - scheduler->dma_load(readbuf, task->rbuf,task->r_size, DMA_READ); + scheduler->dma_load(readbuf, task->rbuf,task->r_size, DMA_READ + this->tag); } @@ -87,7 +88,7 @@ if (task->w_size > 0) { writebuf = manager->allocate(task->w_size); } - scheduler->dma_wait(DMA_READ); + scheduler->dma_wait(DMA_READ + this->tag); run(this, readbuf, writebuf); free(readbuf); @@ -123,7 +124,7 @@ TaskPtr nextTask = &list->tasks[cur_index]; SchedTask *nextSched = new SchedTask(); - nextSched->init(list, nextTask, cur_index+1, scheduler); + nextSched->init(list, nextTask, cur_index+1, scheduler, this->tag^1); // この時点で、TaskList は down load が済んでないことがある // 最初のTaskの種類に関しては、別な情報で渡す方が良い // あるいはTaskListの最初には、TaskArray1/TaskArray を置かない? @@ -145,7 +146,8 @@ return new SchedNop2Ready(scheduler); } else { // 新しいリストに取り掛かる - return new SchedTaskList(nextList, scheduler); + int dma_tag_switch = 0; + return new SchedTaskList(nextList, scheduler, dma_tag_switch); } } }