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);
+    }
 }