109
|
1 #include "Task.h"
|
|
2
|
|
3 /**
|
321
|
4 * タスクの入力データを追加する
|
109
|
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 /**
|
321
|
24 * エラーの時に -1 を返す、ってことするよりは
|
|
25 * perror みたいにしたほうがわかりやすいかな。
|
109
|
26 *
|
321
|
27 * 現在は 3 個まで。
|
|
28 * 本当は、3個以上にすると task->param[] には アドレスが入り
|
|
29 * そのアドレスは メインメモリでアロケートされた int の集合。
|
109
|
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 /*
|
321
|
41 * エラーの時に -1 を返す、ってことするよりは
|
|
42 * perror みたいにしたほうがわかりやすいかな。
|
109
|
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
|
321
|
51 // size でも制限かけるべき?
|
109
|
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 }
|