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 }