view TaskManager/kernel/ppe/Task.cc @ 354:81b25e5d5379

add example/get_segment and change spe/DrawSpan.cpp
author koba
date Wed, 15 Jul 2009 17:39:51 +0900
parents a4d17bc4efef
children c9127aec8c9c
line wrap: on
line source

#include "Task.h"

/**
 * タスクの入力データを追加する
 *
 * @param [addr] add input data
 * @param [size] size of data at [addr]
 *
 * @return if ([ret] == 0) ? success : failuer;
 */
int
Task::add_inData_t(unsigned int addr, int size)
{
    return add_data(this->inData, addr, size);
}

/**
 * タスクの出力先を追加する
 *
 * @param[in] addr Address at out data
 * @param[in] size Size of data transfer
 *
 * @return if ([ret] == 0) ? success : failuer;
 */
int
Task::add_outData_t(unsigned int addr, int size)
{
    return add_data(this->outData, addr, size);
}

/**
 * エラーの時に -1 を返す、ってことするよりは
 * perror みたいにしたほうがわかりやすいかな。
 */
int
Task::add_param(int _param)
{
    if (param_size >= MAX_PARAMS) return -1;
    
    this->param[param_size++] = _param;
    return 0;
}

/*
 * エラーの時に -1 を返す、ってことするよりは
 * perror みたいにしたほうがわかりやすいかな。
 */
int
Task::add_data(ListDataPtr list, uint32 addr, int size)
{
    if (list->length >= MAX_LIST_DMA_SIZE) return -1;

    list->bound[list->length] = list->size;

    // size でも制限かけるべき?
    list->size += size;

    ListElementPtr elm = &list->element[list->length++];
    elm->addr = addr;
    elm->size = size;

    return 0;
}