annotate TaskManager/kernel/schedule/Scheduler.cc @ 50:7927e00fb8e2

*** empty log message ***
author gongo
date Fri, 15 Feb 2008 19:36:08 +0900
parents 70a0ac46133e
children 5c194c71eca8
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>
50
7927e00fb8e2 *** empty log message ***
gongo
parents: 48
diff changeset
2 #include <stdlib.h>
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
3 #include "Scheduler.h"
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
4 #include "SchedNop.h"
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
5 #include "error.h"
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
6
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
7 void
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
8 Scheduler::init(void)
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
9 {
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
10 init_impl();
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
11
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
12 listBufFlg = 0;
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
13 readBufFlg = 0;
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
14 writeBufFlg = 0;
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
15 }
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
16
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
17 void
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
18 Scheduler::run(void)
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
19 {
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
20 SchedTaskBase* taskTmp;
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
21 task1 = new SchedNop();
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
22 task2 = new SchedNop();
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
23 task3 = new SchedNop();
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
24
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
25 // main loop
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
26 do {
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
27 __debug("----------\n");
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
28 task3->write();
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
29 task2->exec();
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
30 task1->read();
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
31
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
32 taskTmp = task3;
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
33 task3 = task2;
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
34 task2 = task1;
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
35 task1 = task1->next(this, taskTmp);
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
36 } while (task1);
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
37
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
38 delete task3;
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
39 delete task2;
50
7927e00fb8e2 *** empty log message ***
gongo
parents: 48
diff changeset
40 }
48
70a0ac46133e *** empty log message ***
gongo
parents: 42
diff changeset
41
50
7927e00fb8e2 *** empty log message ***
gongo
parents: 48
diff changeset
42
7927e00fb8e2 *** empty log message ***
gongo
parents: 48
diff changeset
43 void
7927e00fb8e2 *** empty log message ***
gongo
parents: 48
diff changeset
44 Scheduler::finish(void)
7927e00fb8e2 *** empty log message ***
gongo
parents: 48
diff changeset
45 {
7927e00fb8e2 *** empty log message ***
gongo
parents: 48
diff changeset
46 free(listBuf[0]);
7927e00fb8e2 *** empty log message ***
gongo
parents: 48
diff changeset
47 free(listBuf[1]);
7927e00fb8e2 *** empty log message ***
gongo
parents: 48
diff changeset
48 free(readBuf[0]);
7927e00fb8e2 *** empty log message ***
gongo
parents: 48
diff changeset
49 free(readBuf[1]);
7927e00fb8e2 *** empty log message ***
gongo
parents: 48
diff changeset
50 free(writeBuf[0]);
7927e00fb8e2 *** empty log message ***
gongo
parents: 48
diff changeset
51 free(writeBuf[1]);
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
52 }
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
53
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
54 TaskListPtr
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
55 Scheduler::get_curListBuf(void)
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
56 {
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
57 listBufFlg ^= 1;
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
58 return listBuf[listBufFlg];
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
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
62 void *
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
63 Scheduler::get_curWriteBuf(void)
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
64 {
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
65 writeBufFlg ^= 1;
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
66 return writeBuf[writeBufFlg];
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
67 }
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
68
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
69
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
70 void*
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
71 Scheduler::get_curReadBuf(void)
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
72 {
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
73 readBufFlg ^= 1;
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
74 return readBuf[readBufFlg];
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
75 }