annotate TaskManager/kernel/schedule/TaskGroup.cc @ 109:5c194c71eca8

Cerium cvs version
author gongo@gendarme.local
date Wed, 12 Nov 2008 17:39:33 +0900
parents
children d734af296d38
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
1 #include "TaskGroup.h"
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
2
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
3 void
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
4 TaskGroup::add(TaskPtr add_task) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
5 TaskQueuePtr q = new TaskQueue(add_task);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
6 group = TaskQueue::append(group, q);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
7 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
8
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
9 void
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
10 TaskGroup::remove(TaskPtr delete_task) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
11 TaskQueuePtr p = group;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
12 TaskQueuePtr p1;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
13
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
14 if (p == NULL) return;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
15
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
16 if (p->task == delete_task) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
17 group = group->next;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
18 delete p;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
19 } else {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
20 p1 = p->next;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
21 while (p1 && p1->task != delete_task) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
22 p1 = p1->next;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
23 p = p->next;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
24 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
25 if (p1) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
26 p->next = p1->next;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
27 delete p1;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
28 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
29 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
30 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
31
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
32
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
33 unsigned int
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
34 TaskGroup::status(void) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
35 /**
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
36 * bool の
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
37 * true == 1;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
38 * false == 0;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
39 * って保証されてるんだっけ?
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
40 */
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
41 #if 1
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
42 return (group == NULL) * command;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
43 #else
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
44 if (group.empty()) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
45 return command;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
46 } else {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
47 return 0;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
48 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
49 #endif
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
50 }