diff TaskManager/Fifo/MainScheduler.cc @ 109:028ffc9c0375 draft

Cerium cvs version
author gongo@gendarme.local
date Wed, 12 Nov 2008 17:39:33 +0900
parents
children 768452fab95e
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TaskManager/Fifo/MainScheduler.cc	Wed Nov 12 17:39:33 2008 +0900
@@ -0,0 +1,70 @@
+#include <stdlib.h>
+#include <string.h>
+#include "MainScheduler.h"
+#include "FifoDmaManager.h"
+#include "error.h"
+
+void
+MainScheduler::init_impl(void)
+{
+    connector = new FifoDmaManager();
+}
+
+void
+MainScheduler::set_mailManager(MailManager *m)
+{
+    ((FifoDmaManager*)connector)->mailManager = m;
+}
+
+/**
+ * PPE TaskManager から TaskList やその他コマンドが格納された
+ * メールキューが送られてくる
+ */
+void
+MainScheduler::send_mailList(MailQueuePtr mail_list)
+{
+    ((FifoDmaManager*)connector)->mail_recvQueue = mail_list;
+    ((FifoDmaManager*)connector)->mail_sendQueue = NULL;
+}
+
+/**
+ * PPE TaskManager が、 Task の終了やその他コマンドが格納された
+ * メールキューを受け取る
+ */
+MailQueuePtr
+MainScheduler::recv_mailList(void)
+{
+    return ((FifoDmaManager*)connector)->mail_sendQueue;
+}
+
+
+void*
+MainScheduler::allocate(int size)
+{
+    void *ptr = malloc(size);
+    bzero(ptr, size);
+
+    return ptr;
+}
+
+
+/**
+ * メインメモリ領域を allocate する。
+ * Fifo バージョンだから、まあ普通に malloc でおk
+ */
+void
+MainScheduler::mainMem_alloc(int id, int size)
+{
+    mainMemList[id] = allocate(size);
+}
+
+#if 0
+/**
+ * MainScheduler.h に書いてます
+ */ 
+void
+MainScheduler::mainMem_wait(void)
+{
+    // 何もしねえ
+}
+#endif