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);
         }
     }
 }