annotate TaskManager/Cell/spe/Task.cc @ 364:87462f8d3761

uint32 to memaddr(uint64)
author tkaito@localhost.localdomain
date Fri, 24 Jul 2009 17:40:53 +0900
parents f64d75473f95
children
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 /**
321
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
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 /**
321
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
24 * エラーの時に -1 を返す、ってことするよりは
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
25 * perror みたいにしたほうがわかりやすいかな。
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
26 *
321
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
27 * 現在は 3 個まで。
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
28 * 本当は、3個以上にすると task->param[] には アドレスが入り
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
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 /*
321
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
41 * エラーの時に -1 を返す、ってことするよりは
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
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
321
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
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 }