annotate TaskManager/kernel/schedule/Scheduler.cc @ 48:70a0ac46133e

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