Mercurial > hg > Game > Cerium
view TaskManager/Cell/spe/Task.cc @ 318:a5ae1fbbafd6 draft
Document/Cerium_2009.mm
author | aaa |
---|---|
date | Tue, 09 Jun 2009 22:55:00 +0900 |
parents | 768452fab95e |
children | f22280772f20 |
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); } int Task::add_outData_t(unsigned int addr, int size) { return add_data(this->outData, addr, size); } /** * エラーの時に -1 を返す、ってことするよりは * perror みたいにしたほうがわかりやすいかな。 * * 現在は 3 個まで。 * 本当は、3個以上にすると task->param[] には アドレスが入り * そのアドレスは メインメモリでアロケートされた int の集合。 */ 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; }