Mercurial > hg > Members > kono > Cerium
diff TaskManager/kernel/schedule/SchedTaskList.cc @ 717:4c12f679a0fa
TaskList load timing...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 18 Dec 2009 12:17:31 +0900 |
parents | 8ab63ded2c3f |
children | 33630c6ff445 |
line wrap: on
line diff
--- a/TaskManager/kernel/schedule/SchedTaskList.cc Wed Dec 16 18:04:26 2009 +0900 +++ b/TaskManager/kernel/schedule/SchedTaskList.cc Fri Dec 18 12:17:31 2009 +0900 @@ -21,37 +21,40 @@ SchedTaskList::SchedTaskList(memaddr addr, Scheduler *sched) { + // next() で生成された時に、Task List read を始める params_addr = addr; - list = NULL; scheduler = sched; cur_index = 0; - + list = scheduler->get_curListBuf(); + scheduler->dma_load(list, params_addr, + sizeof(TaskList), DMA_READ_TASKLIST); } void SchedTaskList::read() { + // next() で TaskListの中身を見られてしまうので、 + // ここで DMA 待ちを行う __debug("[SchedTaskList:%s]\n", __FUNCTION__); - - list = scheduler->get_curListBuf(); - scheduler->dma_load(list, params_addr, - sizeof(TaskList), DMA_READ_TASKLIST); + scheduler->dma_wait(DMA_READ_TASKLIST); } void -SchedTaskList::exec() {} +SchedTaskList::exec() { +} void SchedTaskList::write() { - __debug("[SchedTaskList:%s]\n", __FUNCTION__); - - scheduler->dma_wait(DMA_READ_TASKLIST); } /** * next は、SchedTask のものが使われる。 + * それで正しく動くはず。 + * + * next() が呼ばれた時点で、TaskList のloadが終了しているように工夫する。 + * */ /* end */