Mercurial > hg > Members > kono > Cerium
annotate TaskManager/kernel/ppe/Task.cc @ 514:2659376067e8
old ball_bound fix...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 20 Oct 2009 21:18:28 +0900 |
parents | cb5ecfc5aaa3 |
children | 125a72948e44 |
rev | line source |
---|---|
109 | 1 #include "Task.h" |
2 | |
3 /** | |
298 | 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 { | |
498
cb5ecfc5aaa3
double linked HTaskInfo/HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
478
diff
changeset
|
14 return add_data(inData, addr, size); |
109 | 15 } |
16 | |
181 | 17 /** |
298 | 18 * タスクの出力先を追加する |
181 | 19 * |
20 * @param[in] addr Address at out data | |
21 * @param[in] size Size of data transfer | |
22 * | |
23 * @return if ([ret] == 0) ? success : failuer; | |
24 */ | |
109 | 25 int |
26 Task::add_outData_t(unsigned int addr, int size) | |
27 { | |
498
cb5ecfc5aaa3
double linked HTaskInfo/HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
478
diff
changeset
|
28 return add_data(outData, addr, size); |
109 | 29 } |
30 | |
31 /** | |
298 | 32 * エラーの時に -1 を返す、ってことするよりは |
33 * perror みたいにしたほうがわかりやすいかな。 | |
478
c9127aec8c9c
remove duplicate sources in Cell/spe
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
298
diff
changeset
|
34 * |
c9127aec8c9c
remove duplicate sources in Cell/spe
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
298
diff
changeset
|
35 * 現在は 3 個まで。 |
c9127aec8c9c
remove duplicate sources in Cell/spe
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
298
diff
changeset
|
36 * 本当は、3個以上にすると task->param[] には アドレスが入り |
c9127aec8c9c
remove duplicate sources in Cell/spe
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
298
diff
changeset
|
37 * そのアドレスは メインメモリでアロケートされた int の集合。 |
109 | 38 */ |
39 int | |
40 Task::add_param(int _param) | |
41 { | |
42 if (param_size >= MAX_PARAMS) return -1; | |
43 | |
44 this->param[param_size++] = _param; | |
45 return 0; | |
46 } | |
47 | |
48 /* | |
298 | 49 * エラーの時に -1 を返す、ってことするよりは |
50 * perror みたいにしたほうがわかりやすいかな。 | |
109 | 51 */ |
52 int | |
498
cb5ecfc5aaa3
double linked HTaskInfo/HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
478
diff
changeset
|
53 Task::add_data(ListData& list, uint32 addr, int size) |
109 | 54 { |
498
cb5ecfc5aaa3
double linked HTaskInfo/HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
478
diff
changeset
|
55 if (list.length >= MAX_LIST_DMA_SIZE) return -1; |
109 | 56 |
498
cb5ecfc5aaa3
double linked HTaskInfo/HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
478
diff
changeset
|
57 list.bound[list.length] = list.size; |
109 | 58 |
298 | 59 // size でも制限かけるべき? |
498
cb5ecfc5aaa3
double linked HTaskInfo/HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
478
diff
changeset
|
60 list.size += size; |
109 | 61 |
498
cb5ecfc5aaa3
double linked HTaskInfo/HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
478
diff
changeset
|
62 ListElementPtr elm = &list.element[list.length++]; |
109 | 63 elm->addr = addr; |
64 elm->size = size; | |
65 | |
66 return 0; | |
67 } |