Mercurial > hg > Members > kono > Cerium
view TaskManager/kernel/ppe/TaskManagerImpl.cc @ 3:2356238ebea7
*** empty log message ***
author | gongo |
---|---|
date | Tue, 05 Feb 2008 20:22:50 +0900 |
parents | |
children | 75f184d16fa5 |
line wrap: on
line source
#include "TaskManagerImpl.h" void noaction(void) { } TaskManagerImpl::TaskManagerImpl(int num) { machineNum = num; } HTaskPtr TaskManagerImpl::create_task(int cmd, int size, unsigned long long in_addr, unsigned long long out_addr, void (*func)(void)) { HTaskPtr new_task; new_task = taskInfo->get_free_task(cmd, size, in_addr, out_addr); if (func == NULL) { new_task->post_func = noaction; } else { new_task->post_func = func; } return new_task; } /** * task の依存関係を設定 * master task が終わってから、slave task を実行するように */ void TaskManagerImpl::set_task_depend(HTaskPtr master, HTaskPtr slave) { TaskQueuePtr m, s; m = taskInfo->get_free_taskQueue(master); s = taskInfo->get_free_taskQueue(slave); master->wait_me = append_taskQueue(master->wait_me, s); slave->wait_i = append_taskQueue(slave->wait_i, m); } void TaskManagerImpl::run_task(HTaskPtr task) { if (task->wait_i == NULL) { taskInfo->append_activeTask(task); } else { taskInfo->append_waitTask(task); } }