annotate TaskManager/kernel/schedule/Scheduler.cc @ 42:aa11038dbdc1

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