42
|
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 }
|