Mercurial > hg > Game > Cerium
view TaskManager/Cell/spe/SchedTaskList.cc @ 109:028ffc9c0375 draft
Cerium cvs version
author | gongo@gendarme.local |
---|---|
date | Wed, 12 Nov 2008 17:39:33 +0900 |
parents | 504899860e66 |
children | e3b7776b1420 |
line wrap: on
line source
#include <stdio.h> #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; } }