Mercurial > hg > Members > kono > Cerium
diff 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 |
line wrap: on
line diff
--- a/TaskManager/kernel/schedule/SchedNop2Ready.cc Wed Nov 12 17:29:35 2008 +0900 +++ b/TaskManager/kernel/schedule/SchedNop2Ready.cc Wed Nov 12 17:39:33 2008 +0900 @@ -1,11 +1,12 @@ #include <stdio.h> #include "SchedNop2Ready.h" +#include "SchedTaskList.h" #include "SchedMail.h" #include "error.h" -SchedNop2Ready::SchedNop2Ready(DmaManager *cn) +SchedNop2Ready::SchedNop2Ready(Scheduler *cn) { - connector = cn; + scheduler = cn; } void @@ -13,7 +14,7 @@ { __debug("[SchedNop2Ready:%s]\n", __FUNCTION__); - connector->mail_write(MY_SPE_STATUS_READY); + //scheduler->mail_write(MY_SPE_STATUS_READY); } SchedTaskBase* @@ -23,5 +24,18 @@ delete p; - return new SchedMail(connector); + // 追加されたタスクがあれば + if (scheduler->renewTop_taskList) { + TaskListPtr list = scheduler->renewTop_taskList; + scheduler->renewTop_taskList = scheduler->renewTop_taskList->next; + scheduler->renewCur_taskList = NULL; + + list->next = NULL; + SchedTaskList *schd = new SchedTaskList((unsigned int)list, scheduler); + schd->flag_renewTaskList = 1; + return schd; + } else { + scheduler->mail_write(MY_SPE_STATUS_READY); + return new SchedMail(scheduler); + } }