comparison TaskManager/kernel/ppe/Task.cc @ 109:5c194c71eca8

Cerium cvs version
author gongo@gendarme.local
date Wed, 12 Nov 2008 17:39:33 +0900
parents
children a4d17bc4efef
comparison
equal deleted inserted replaced
108:6f3b3dd3c095 109:5c194c71eca8
1 #include "Task.h"
2
3 /**
4 * タスクの入力データを追加する
5 *
6 * @param [addr] add input data
7 * @param [size] size of data at [addr]
8 *
9 * @return if ([ret] == 0) ? success : failuer;
10 */
11 int
12 Task::add_inData_t(unsigned int addr, int size)
13 {
14 return add_data(this->inData, addr, size);
15 }
16
17 int
18 Task::add_outData_t(unsigned int addr, int size)
19 {
20 return add_data(this->outData, addr, size);
21 }
22
23 /**
24 * エラーの時に -1 を返す、ってことするよりは
25 * perror みたいにしたほうがわかりやすいかな。
26 *
27 * 現在は 3 個まで。
28 * 本当は、3個以上にすると task->param[] には アドレスが入り
29 * そのアドレスは メインメモリでアロケートされた int の集合。
30 */
31 int
32 Task::add_param(int _param)
33 {
34 if (param_size >= MAX_PARAMS) return -1;
35
36 this->param[param_size++] = _param;
37 return 0;
38 }
39
40 /*
41 * エラーの時に -1 を返す、ってことするよりは
42 * perror みたいにしたほうがわかりやすいかな。
43 */
44 int
45 Task::add_data(ListDataPtr list, uint32 addr, int size)
46 {
47 if (list->length >= MAX_LIST_DMA_SIZE) return -1;
48
49 list->bound[list->length] = list->size;
50
51 // size でも制限かけるべき?
52 list->size += size;
53
54 ListElementPtr elm = &list->element[list->length++];
55 elm->addr = addr;
56 elm->size = size;
57
58 return 0;
59 }