changeset 216:894675539cbf

rename cerium_main to TMmain, add TMend()
author gongo@localhost.localdomain
date Wed, 04 Feb 2009 22:44:16 +0900
parents 5bd1425fb561
children 897aeb144569
files TaskManager/ChangeLog TaskManager/kernel/main.cc TaskManager/kernel/ppe/TaskManager.cc include/TaskManager/TaskManager.h
diffstat 4 files changed, 51 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/TaskManager/ChangeLog	Sun Feb 01 20:46:39 2009 +0900
+++ b/TaskManager/ChangeLog	Wed Feb 04 22:44:16 2009 +0900
@@ -1,3 +1,20 @@
+2009-02-04  Wataru MIYAGUNI  <gongo@cr.ie.u-ryukyu.ac.jp>
+
+	* kernel/ppe/TaskManager.cc (TaskManager::allocate): rename
+	malloc -> allocate
+
+	* kernel/main.cc (main): fix
+	cerium_main を呼ぶのではなく、TMmain という名前にしました。
+	ちょっと SDLmain をパクった感じで。
+	まあ TaskManager の main で cerium_* って名前は微妙に変だからね。
+
+	* kernel/ppe/TaskManager.cc (TaskManager::set_TMend): add
+	cerium_main があるんだから、cerium_end があってもいいじゃない。
+	もっと言うと、TaskManager に main を隠すって流れなんだけど
+	終了を検知できないのはちとやりづらいかなと。
+	たとえば測定とか。Task の post_func とかでもやれないことはないけどね。
+	というわけで、ユーザが、プログラム終了時に呼ばれる関数を設定できるように。
+
 2009-01-20  Wataru MIYAGUNI  <gongo@cr.ie.u-ryukyu.ac.jp>
 
 	* Cell/spe/SchedTask.cc (SchedTask::get_cpuid): add
--- a/TaskManager/kernel/main.cc	Sun Feb 01 20:46:39 2009 +0900
+++ b/TaskManager/kernel/main.cc	Wed Feb 04 22:44:16 2009 +0900
@@ -3,8 +3,12 @@
 #include <SDL.h>
 #include "TaskManager.h"
 
-/* for user main function */
-extern int cerium_main(int argc, char *argv[]);
+/* User main function */
+extern int TMmain(int argc, char *argv[]);
+
+/* Default TMend function */
+static void
+defaultTMend(void) {}
 
 TaskManager *manager;
 static char *help_str = "\n\
@@ -30,12 +34,16 @@
     manager = new TaskManager(cpuNum);
     manager->init();
 
-    if (cerium_main(argc, argv) < 0) {
+    manager->set_TMend(defaultTMend);
+
+    if (TMmain(argc, argv) < 0) {
 	goto FINISH;
     }
 
     manager->run();
 
+    (manager->tm_end)();
+
 FINISH:
     delete manager;
 
--- a/TaskManager/kernel/ppe/TaskManager.cc	Sun Feb 01 20:46:39 2009 +0900
+++ b/TaskManager/kernel/ppe/TaskManager.cc	Wed Feb 04 22:44:16 2009 +0900
@@ -50,8 +50,22 @@
     return m_impl->create_task(cmd);
 }
 
+/**
+ * TaskManaer 終了時に実行される関数の設定
+ */
+void
+TaskManager::set_TMend(void (*endf)(void))
+{
+    tm_end = endf;
+}
+
 void
 TaskManager::run(void)
 {
     m_impl->run();
 }
+
+void*
+TaskManager::allocate(int size) {
+    return m_impl->allocate(size);
+}
--- a/include/TaskManager/TaskManager.h	Sun Feb 01 20:46:39 2009 +0900
+++ b/include/TaskManager/TaskManager.h	Wed Feb 04 22:44:16 2009 +0900
@@ -12,17 +12,19 @@
     ~TaskManager(void);
 
     /* variables */
-    TaskManagerImpl *m_impl;
+
+    TaskManagerImpl *m_impl;    
+    void (*tm_end)(void);
+
+    /* user function */
+    HTaskPtr create_task(int cmd);
+    void run(void);
+    void *allocate(int size);
+    void set_TMend(void (*endf)(void));
 
     /* functions */
     void init(void);
     void finish(void);
-    HTaskPtr create_task(int cmd);
-    void run(void);
-
-    void* malloc(int size) {
-	return m_impl->allocate(size);
-    }
 
 private:
     int machineNum;