Mercurial > hg > Members > kono > Cerium
comparison TaskManager/kernel/schedule/Scheduler.cc @ 42:aa11038dbdc1
*** empty log message ***
author | gongo |
---|---|
date | Thu, 14 Feb 2008 18:27:37 +0900 |
parents | |
children | 70a0ac46133e |
comparison
equal
deleted
inserted
replaced
41:68fb5bfee6b7 | 42:aa11038dbdc1 |
---|---|
1 #include "Scheduler.h" | |
2 #include "SchedNop.h" | |
3 #include "error.h" | |
4 | |
5 void | |
6 Scheduler::init(void) | |
7 { | |
8 init_impl(); | |
9 | |
10 listBufFlg = 0; | |
11 readBufFlg = 0; | |
12 writeBufFlg = 0; | |
13 } | |
14 | |
15 void | |
16 Scheduler::run(void) | |
17 { | |
18 SchedTaskBase* taskTmp; | |
19 task1 = new SchedNop(); | |
20 task2 = new SchedNop(); | |
21 task3 = new SchedNop(); | |
22 | |
23 // main loop | |
24 do { | |
25 __debug("----------\n"); | |
26 task3->write(); | |
27 task2->exec(); | |
28 task1->read(); | |
29 | |
30 taskTmp = task3; | |
31 task3 = task2; | |
32 task2 = task1; | |
33 task1 = task1->next(this, taskTmp); | |
34 } while (task1); | |
35 | |
36 delete task3; | |
37 delete task2; | |
38 } | |
39 | |
40 TaskListPtr | |
41 Scheduler::get_curListBuf(void) | |
42 { | |
43 listBufFlg ^= 1; | |
44 return listBuf[listBufFlg]; | |
45 } | |
46 | |
47 | |
48 void * | |
49 Scheduler::get_curWriteBuf(void) | |
50 { | |
51 writeBufFlg ^= 1; | |
52 return writeBuf[writeBufFlg]; | |
53 } | |
54 | |
55 | |
56 void* | |
57 Scheduler::get_curReadBuf(void) | |
58 { | |
59 readBufFlg ^= 1; | |
60 return readBuf[readBufFlg]; | |
61 } |