48
|
1 #include <stdio.h>
|
42
|
2 #include "Scheduler.h"
|
|
3 #include "SchedNop.h"
|
|
4 #include "error.h"
|
|
5
|
|
6 void
|
|
7 Scheduler::init(void)
|
|
8 {
|
|
9 init_impl();
|
|
10
|
|
11 listBufFlg = 0;
|
|
12 readBufFlg = 0;
|
|
13 writeBufFlg = 0;
|
|
14 }
|
|
15
|
|
16 void
|
|
17 Scheduler::run(void)
|
|
18 {
|
|
19 SchedTaskBase* taskTmp;
|
|
20 task1 = new SchedNop();
|
|
21 task2 = new SchedNop();
|
|
22 task3 = new SchedNop();
|
|
23
|
48
|
24 fprintf(stderr, " ****** scheduler start ******\n");
|
|
25
|
42
|
26 // main loop
|
|
27 do {
|
|
28 __debug("----------\n");
|
|
29 task3->write();
|
|
30 task2->exec();
|
|
31 task1->read();
|
|
32
|
|
33 taskTmp = task3;
|
|
34 task3 = task2;
|
|
35 task2 = task1;
|
|
36 task1 = task1->next(this, taskTmp);
|
|
37 } while (task1);
|
|
38
|
|
39 delete task3;
|
|
40 delete task2;
|
48
|
41
|
|
42 fprintf(stderr, " ****** scheduler finish ******\n");
|
42
|
43 }
|
|
44
|
|
45 TaskListPtr
|
|
46 Scheduler::get_curListBuf(void)
|
|
47 {
|
|
48 listBufFlg ^= 1;
|
|
49 return listBuf[listBufFlg];
|
|
50 }
|
|
51
|
|
52
|
|
53 void *
|
|
54 Scheduler::get_curWriteBuf(void)
|
|
55 {
|
|
56 writeBufFlg ^= 1;
|
|
57 return writeBuf[writeBufFlg];
|
|
58 }
|
|
59
|
|
60
|
|
61 void*
|
|
62 Scheduler::get_curReadBuf(void)
|
|
63 {
|
|
64 readBufFlg ^= 1;
|
|
65 return readBuf[readBufFlg];
|
|
66 }
|