Mercurial > hg > Members > kono > Cerium
diff TaskManager/kernel/schedule/Scheduler.cc @ 42:aa11038dbdc1
*** empty log message ***
author | gongo |
---|---|
date | Thu, 14 Feb 2008 18:27:37 +0900 |
parents | |
children | 70a0ac46133e |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TaskManager/kernel/schedule/Scheduler.cc Thu Feb 14 18:27:37 2008 +0900 @@ -0,0 +1,61 @@ +#include "Scheduler.h" +#include "SchedNop.h" +#include "error.h" + +void +Scheduler::init(void) +{ + init_impl(); + + listBufFlg = 0; + readBufFlg = 0; + writeBufFlg = 0; +} + +void +Scheduler::run(void) +{ + SchedTaskBase* taskTmp; + task1 = new SchedNop(); + task2 = new SchedNop(); + task3 = new SchedNop(); + + // main loop + do { + __debug("----------\n"); + task3->write(); + task2->exec(); + task1->read(); + + taskTmp = task3; + task3 = task2; + task2 = task1; + task1 = task1->next(this, taskTmp); + } while (task1); + + delete task3; + delete task2; +} + +TaskListPtr +Scheduler::get_curListBuf(void) +{ + listBufFlg ^= 1; + return listBuf[listBufFlg]; +} + + +void * +Scheduler::get_curWriteBuf(void) +{ + writeBufFlg ^= 1; + return writeBuf[writeBufFlg]; +} + + +void* +Scheduler::get_curReadBuf(void) +{ + readBufFlg ^= 1; + return readBuf[readBufFlg]; +}