diff TaskManager/kernel/schedule/Scheduler.cc @ 42:aa11038dbdc1

*** empty log message ***
author gongo
date Thu, 14 Feb 2008 18:27:37 +0900
parents
children 70a0ac46133e
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TaskManager/kernel/schedule/Scheduler.cc	Thu Feb 14 18:27:37 2008 +0900
@@ -0,0 +1,61 @@
+#include "Scheduler.h"
+#include "SchedNop.h"
+#include "error.h"
+
+void
+Scheduler::init(void)
+{
+    init_impl();
+    
+    listBufFlg = 0;
+    readBufFlg = 0;
+    writeBufFlg = 0;
+}
+
+void
+Scheduler::run(void)
+{
+    SchedTaskBase* taskTmp;
+    task1 = new SchedNop();
+    task2 = new SchedNop();
+    task3 = new SchedNop();
+
+    // main loop
+    do {
+	__debug("----------\n");
+	task3->write();
+	task2->exec();
+	task1->read();
+
+	taskTmp = task3;
+	task3 = task2;
+	task2 = task1;
+	task1 = task1->next(this, taskTmp);
+    } while (task1);
+
+    delete task3;
+    delete task2;
+}
+
+TaskListPtr
+Scheduler::get_curListBuf(void)
+{
+    listBufFlg ^= 1;
+    return listBuf[listBufFlg];
+}
+
+
+void *
+Scheduler::get_curWriteBuf(void)
+{
+    writeBufFlg ^= 1;
+    return writeBuf[writeBufFlg];
+}
+
+
+void*
+Scheduler::get_curReadBuf(void)
+{
+    readBufFlg ^= 1;
+    return readBuf[readBufFlg];
+}