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