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);	
    }
}