diff TaskManager/kernel/ppe/TaskManager.cc @ 3:2356238ebea7

*** empty log message ***
author gongo
date Tue, 05 Feb 2008 20:22:50 +0900
parents
children 41ccd4b38184
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TaskManager/kernel/ppe/TaskManager.cc	Tue Feb 05 20:22:50 2008 +0900
@@ -0,0 +1,66 @@
+#include "TaskManager.h"
+
+TaskManager::TaskManager(int num)
+{
+    machineNum = num;
+}
+
+/**
+ * create_impl(int);
+ *
+ * [cell版] ../../Cell/SpeTaskManagerImpl.cpp
+ * [fifo版] ../../Fifo/FifoTaskManagerImpl.cpp
+ * で定義されています。コンパイル時に
+ *
+ * % make cell ってすると cell 版が、
+ * % make fifo ってすると fifo 版 がリンクされるようにしているので
+ * それに応じて create_impl が返す値を変えています。
+ * cell だったら SpeManagerImpl, fifo だったら FifoManagerImpl です。
+ *
+ * 今までは ifdef CELL とか書いてましたわ。どっちがいいかね
+ *
+ * てか、普通に TaskManagerImpl に関数持たせた方が早いか・・・?
+ */
+extern TaskManagerImpl* create_impl(int);
+
+void
+TaskManager::init(void)
+{
+    m_impl = create_impl(machineNum);
+    m_impl->init();
+}
+
+/**
+ * @param command   Task executes method number
+ * @param in_size   Size of data 
+ * @param in_addr   Input address of data
+ * @param out_addr  Output address of data
+ * @param func      When this task ends, func execute.
+ *
+ * @return this task
+ */
+
+HTaskPtr
+TaskManager::create_task(int cmd, int size, unsigned long long in_addr, 
+			 unsigned long long out_addr, void (*func)(void))
+{
+    return m_impl->create_task(cmd, size, in_addr, out_addr, func);
+}
+
+void
+TaskManager::set_task_depend(HTaskPtr master, HTaskPtr slave)
+{
+    m_impl->set_task_depend(master, slave);
+}
+
+void
+TaskManager::run_task(HTaskPtr task)
+{
+    m_impl->run_task(task);
+}
+
+void
+TaskManager::run(void)
+{
+    m_impl->run();
+}