Mercurial > hg > Members > kono > Cerium
comparison TaskManager/kernel/schedule/SchedNop2Ready.cc @ 109:5c194c71eca8
Cerium cvs version
author | gongo@gendarme.local |
---|---|
date | Wed, 12 Nov 2008 17:39:33 +0900 |
parents | aa11038dbdc1 |
children | 907bda4a1a14 |
comparison
equal
deleted
inserted
replaced
108:6f3b3dd3c095 | 109:5c194c71eca8 |
---|---|
1 #include <stdio.h> | 1 #include <stdio.h> |
2 #include "SchedNop2Ready.h" | 2 #include "SchedNop2Ready.h" |
3 #include "SchedTaskList.h" | |
3 #include "SchedMail.h" | 4 #include "SchedMail.h" |
4 #include "error.h" | 5 #include "error.h" |
5 | 6 |
6 SchedNop2Ready::SchedNop2Ready(DmaManager *cn) | 7 SchedNop2Ready::SchedNop2Ready(Scheduler *cn) |
7 { | 8 { |
8 connector = cn; | 9 scheduler = cn; |
9 } | 10 } |
10 | 11 |
11 void | 12 void |
12 SchedNop2Ready::exec(void) | 13 SchedNop2Ready::exec(void) |
13 { | 14 { |
14 __debug("[SchedNop2Ready:%s]\n", __FUNCTION__); | 15 __debug("[SchedNop2Ready:%s]\n", __FUNCTION__); |
15 | 16 |
16 connector->mail_write(MY_SPE_STATUS_READY); | 17 //scheduler->mail_write(MY_SPE_STATUS_READY); |
17 } | 18 } |
18 | 19 |
19 SchedTaskBase* | 20 SchedTaskBase* |
20 SchedNop2Ready::next(Scheduler *m, SchedTaskBase *p) | 21 SchedNop2Ready::next(Scheduler *m, SchedTaskBase *p) |
21 { | 22 { |
22 __debug("[SchedNop2Ready:%s]\n", __FUNCTION__); | 23 __debug("[SchedNop2Ready:%s]\n", __FUNCTION__); |
23 | 24 |
24 delete p; | 25 delete p; |
25 | 26 |
26 return new SchedMail(connector); | 27 // 追加されたタスクがあれば |
28 if (scheduler->renewTop_taskList) { | |
29 TaskListPtr list = scheduler->renewTop_taskList; | |
30 scheduler->renewTop_taskList = scheduler->renewTop_taskList->next; | |
31 scheduler->renewCur_taskList = NULL; | |
32 | |
33 list->next = NULL; | |
34 SchedTaskList *schd = new SchedTaskList((unsigned int)list, scheduler); | |
35 schd->flag_renewTaskList = 1; | |
36 return schd; | |
37 } else { | |
38 scheduler->mail_write(MY_SPE_STATUS_READY); | |
39 return new SchedMail(scheduler); | |
40 } | |
27 } | 41 } |