Mercurial > hg > Members > kono > Cerium
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(); +}