Mercurial > hg > Members > kono > Cerium
diff TaskManager/kernel/ppe/TaskManager.cc @ 109:5c194c71eca8
Cerium cvs version
author | gongo@gendarme.local |
---|---|
date | Wed, 12 Nov 2008 17:39:33 +0900 |
parents | 3e331f7576a1 |
children | 72dcf908ec52 |
line wrap: on
line diff
--- a/TaskManager/kernel/ppe/TaskManager.cc Wed Nov 12 17:29:35 2008 +0900 +++ b/TaskManager/kernel/ppe/TaskManager.cc Wed Nov 12 17:39:33 2008 +0900 @@ -1,23 +1,22 @@ #include "TaskManager.h" -#include "SymTable.h" TaskManager::TaskManager(int num) : machineNum(num) {} /** * create_impl(int); * - * [cell版] ../../Cell/SpeTaskManagerImpl.cpp - * [fifo版] ../../Fifo/FifoTaskManagerImpl.cpp - * で定義されています。コンパイル時に + * [cell] ../../Cell/CellTaskManagerImpl.cpp + * [fifo] ../../Fifo/FifoTaskManagerImpl.cpp + * у臂障潟潟ゃ * - * % make cell ってすると cell 版が、 - * % make fifo ってすると fifo 版 がリンクされるようにしているので - * それに応じて create_impl が返す値を変えています。 - * cell だったら SpeManagerImpl, fifo だったら FifoManagerImpl です。 + * % make cell c cell + * % make fifo c fifo 潟 + * 綽 create_impl 菴ゃ紊障 + * cell c CellManagerImpl, fifo c FifoManagerImpl с * - * 今までは ifdef CELL とか書いてましたわ。どっちがいいかね + * 篁障с ifdef CELL 吾障c< * - * てか、普通に TaskManagerImpl に関数持たせた方が早いか・・・? + * TaskManagerImpl ∽井鴻祉祉誌 */ extern TaskManagerImpl* create_impl(int); @@ -26,117 +25,28 @@ { m_impl = create_impl(machineNum); m_impl->init(); - - symtb = new SymTable; - symtb->init(); + m_impl->systask_init(); } void TaskManager::finish(void) { delete m_impl; - delete symtb; } /** - * @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. + * @param [command] Task executes method number * * @return this task */ - HTaskPtr -//TaskManager::create_task(int cmd, int size, DmaBuffer *in, -// DmaBuffer *out, void (*func)(void)) -TaskManager::create_task(int cmd, int size, unsigned int in, - unsigned int out, void (*func)(void)) +TaskManager::create_task(int cmd) { - return m_impl->create_task(cmd, size, in, out, func); + return m_impl->create_task(cmd); } -/** - * TaskManager を介してではなく、 - * HTask から直接呼べるようにしたので不要に - * - * obsolute API - * manager->set_task_depend(master, slave); - * new API - * slave->set_depend(master); - */ -#if 0 -void -TaskManager::set_task_depend(HTaskPtr master, HTaskPtr slave) -{ - m_impl->set_task_depend(master, slave); -} - -void -TaskManager::spawn_task(HTaskPtr task) -{ - m_impl->spawn_task(task); -} -#endif - void TaskManager::run(void) { m_impl->run(); } - -/** - * initialize task だから(?)、 - * read/write/post/func はなしって最初から決めうちだけど - * いいのかな。いいのか? - */ -void -TaskManager::set_init_task(const char *sym) -{ - HTaskPtr init; - int init_fd; - - init_fd = open(sym); - init = m_impl->create_task(init_fd, 0, 0, 0, 0); - m_impl->spawn_task(init); -} - - -// ここは、バイナリから自動的に読めるとうれしいけど -// どうやるんだろうね。ユーザに追加させるのはめんどくさい -void -TaskManager::set_symbol(const char *sym, SymTable::FuncObject addr) -{ - symtb->set_symbol(sym, addr); -} - -void -TaskManager::set_func(int id, SymTable::FuncObject addr) -{ - symtb->set_func(id, addr); -} - -/** - * open というか、今は topen (task open) ? 違うな - */ -int -TaskManager::open(const char *sym) -{ - return symtb->get_fd(sym); -} - -SymTable::FuncObject -TaskManager::get_address(int fd) -{ - return symtb->get_address(fd); -} - -/** - * 型名指定するには template だけど... - */ -DmaBuffer* -TaskManager::allocate(int size) -{ - return m_impl->allocate(size); -}