Mercurial > hg > Game > Cerium
view TaskManager/kernel/schedule/SchedTaskList.cc @ 145:a5138d6e8996 draft
fix
author | gongo@gendarme.cr.ie.u-ryukyu.ac.jp |
---|---|
date | Tue, 02 Dec 2008 12:46:54 +0900 |
parents | 028ffc9c0375 |
children | a19d3ed4ce5b |
line wrap: on
line source
#include <stdlib.h> #include <string.h> #include "SchedTaskList.h" #include "SchedTask.h" #include "SchedNop2Ready.h" #include "DmaManager.h" #include "error.h" SchedTaskList::SchedTaskList(unsigned int addr, Scheduler *sched) { params_addr = addr; list = sched->get_curListBuf(); scheduler = sched; flag_renewTaskList = 0; } void SchedTaskList::read(void) { __debug("[SchedTaskList:%s]\n", __FUNCTION__); if (flag_renewTaskList == 0) { scheduler->dma_load(list,params_addr,sizeof(TaskList),DMA_READ_TASKLIST); scheduler->dma_wait(DMA_READ_TASKLIST); } else { list = (TaskListPtr)params_addr; } scheduler->curIndex_taskList = 0; scheduler->mainMem_wait(); } SchedTaskBase* SchedTaskList::next(Scheduler *m, SchedTaskBase *p) { __debug("[SchedTaskList:%s]\n", __FUNCTION__); delete p; if (list->length < 1) { return new SchedNop2Ready(scheduler); } else { SchedTask* task = CreateSchedTask(list, m); task->__flag_renewTask = this->flag_renewTaskList; task->__init__(); return task; } }