Mercurial > hg > Game > Cerium
changeset 216:e9a52d68db42 draft
rename cerium_main to TMmain, add TMend()
author | gongo@localhost.localdomain |
---|---|
date | Wed, 04 Feb 2009 22:44:16 +0900 |
parents | cd3fda5a24ae |
children | bfdd037aee21 |
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;