Mercurial > hg > Members > kono > Cerium
view TaskManager/kernel/ppe/TaskManager.cc @ 639:70c5c2d2eb24
fix
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 19 Nov 2009 18:45:24 +0900 |
parents | 0558abba673c |
children | d3afc8777daa |
line wrap: on
line source
#include "TaskManager.h" #include "Scheduler.h" TaskManager::TaskManager(int num) : machineNum(num) { } TaskManager::~TaskManager() { delete m_impl; } /** * create_impl(int); * * [cell版] ../../Cell/CellTaskManagerImpl.cpp * [fifo版] ../../Fifo/FifoTaskManagerImpl.cpp * で定義されています。コンパイル時に * * % make cell ってすると cell 版が、 * % make fifo ってすると fifo 版 がリンクされるようにしているので * それに応じて create_impl が返す値を変えています。 * cell だったら CellManagerImpl, fifo だったら FifoManagerImpl です。 * * 今までは ifdef CELL とか書いてましたわ。どっちがいいかね * * てか、普通に TaskManagerImpl に関数持たせた方が早いか・・・? */ extern TaskManagerImpl* create_impl(int); void TaskManager::init() { m_impl = create_impl(machineNum); m_impl->init(); m_impl->systask_init(); } void TaskManager::finish() { delete m_impl; } /** * @param [command] Task executes method number * * @return this task */ HTaskPtr TaskManager::create_task(int cmd) { return m_impl->create_task(cmd); } HTaskPtr TaskManager::create_task(int cmd, memaddr r, long rs, memaddr w, long ws) { return m_impl->create_task(cmd,r,rs,w,ws); } /** * TaskManaer 終了時に実行される関数の設定 */ void TaskManager::set_TMend(void (*endf)(TaskManager *manager)) { tm_end = endf; } void TaskManager::run() { m_impl->run(); } void* TaskManager::allocate(int size) { return m_impl->allocate(size); } int TaskManager::get_cpuNum() { return machineNum; } int TaskManager::get_random() { return random(); } MemList* TaskManager::createMemList(int size, int count) { return get_scheduler()->createMemList(size, count); } Scheduler* TaskManager::get_scheduler() { return m_impl->get_scheduler(); } /* end */