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