annotate TaskManager/kernel/ppe/Task.cc @ 683:9a6cb2439593

on going...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 06 Dec 2009 18:53:46 +0900
parents 80b23718df18
children 458a1ad91427
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
683
9a6cb2439593 on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 682
diff changeset
3 // #include "SchedTask.h" it includes #define Task
9a6cb2439593 on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 682
diff changeset
4
680
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 667
diff changeset
5 #ifndef SIMPLE_TASK
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
6 /**
298
58fd16298954 from EUC to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 181
diff changeset
7 * タスクの入力データを追加する
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
8 *
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
9 * @param [addr] add input data
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
10 * @param [size] size of data at [addr]
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
11 *
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
12 * @return if ([ret] == 0) ? success : failuer;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
13 */
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
14 int
603
42c94f85c779 long -> memaddr (64 or 32)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 602
diff changeset
15 Task::add_inData_t(memaddr addr, int size)
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
16 {
498
cb5ecfc5aaa3 double linked HTaskInfo/HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 478
diff changeset
17 return add_data(inData, addr, size);
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
18 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
19
181
gongo@localhost.localdomain
parents: 109
diff changeset
20 /**
298
58fd16298954 from EUC to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 181
diff changeset
21 * タスクの出力先を追加する
181
gongo@localhost.localdomain
parents: 109
diff changeset
22 *
gongo@localhost.localdomain
parents: 109
diff changeset
23 * @param[in] addr Address at out data
gongo@localhost.localdomain
parents: 109
diff changeset
24 * @param[in] size Size of data transfer
gongo@localhost.localdomain
parents: 109
diff changeset
25 *
gongo@localhost.localdomain
parents: 109
diff changeset
26 * @return if ([ret] == 0) ? success : failuer;
gongo@localhost.localdomain
parents: 109
diff changeset
27 */
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
28 int
603
42c94f85c779 long -> memaddr (64 or 32)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 602
diff changeset
29 Task::add_outData_t(memaddr addr, int size)
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
30 {
498
cb5ecfc5aaa3 double linked HTaskInfo/HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 478
diff changeset
31 return add_data(outData, addr, size);
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
32 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
33
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
34 /**
298
58fd16298954 from EUC to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 181
diff changeset
35 * エラーの時に -1 を返す、ってことするよりは
58fd16298954 from EUC to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 181
diff changeset
36 * perror みたいにしたほうがわかりやすいかな。
478
c9127aec8c9c remove duplicate sources in Cell/spe
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 298
diff changeset
37 *
615
f7d78b3c1106 First addOutput rendering try failed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 603
diff changeset
38 * 現在は MAX_PARAMS 個まで。
f7d78b3c1106 First addOutput rendering try failed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 603
diff changeset
39 * 本当は、MAX_PARAMS個以上にすると task->param[] には アドレスが入り
478
c9127aec8c9c remove duplicate sources in Cell/spe
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 298
diff changeset
40 * そのアドレスは メインメモリでアロケートされた int の集合。
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
41 */
615
f7d78b3c1106 First addOutput rendering try failed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 603
diff changeset
42
f7d78b3c1106 First addOutput rendering try failed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 603
diff changeset
43 // こちらのAPIは、受け側と出力側での対応を良く見れない。廃止の方向。
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
44 int
683
9a6cb2439593 on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 682
diff changeset
45 Task::add_param_t(memaddr _param)
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
46 {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
47 if (param_size >= MAX_PARAMS) return -1;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
48
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
49 this->param[param_size++] = _param;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
50 return 0;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
51 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
52
615
f7d78b3c1106 First addOutput rendering try failed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 603
diff changeset
53 int
683
9a6cb2439593 on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 682
diff changeset
54 Task::set_param_t(int index, memaddr _param)
615
f7d78b3c1106 First addOutput rendering try failed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 603
diff changeset
55 {
f7d78b3c1106 First addOutput rendering try failed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 603
diff changeset
56 if (index >= MAX_PARAMS) return -1;
f7d78b3c1106 First addOutput rendering try failed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 603
diff changeset
57
f7d78b3c1106 First addOutput rendering try failed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 603
diff changeset
58 this->param[index] = _param;
f7d78b3c1106 First addOutput rendering try failed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 603
diff changeset
59 return 0;
f7d78b3c1106 First addOutput rendering try failed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 603
diff changeset
60 }
f7d78b3c1106 First addOutput rendering try failed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 603
diff changeset
61
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
62 /*
298
58fd16298954 from EUC to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 181
diff changeset
63 * エラーの時に -1 を返す、ってことするよりは
58fd16298954 from EUC to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 181
diff changeset
64 * perror みたいにしたほうがわかりやすいかな。
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
65 */
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
66 int
603
42c94f85c779 long -> memaddr (64 or 32)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 602
diff changeset
67 Task::add_data(ListData& list, memaddr addr, int size)
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
68 {
567
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 519
diff changeset
69 if (list.length >= MAX_LIST_DMA_SIZE) return -1;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
70
567
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 519
diff changeset
71 list.bound[list.length] = list.size;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
72
298
58fd16298954 from EUC to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 181
diff changeset
73 // size でも制限かけるべき?
567
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 519
diff changeset
74 list.size += size;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
75
567
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 519
diff changeset
76 ListElementPtr elm = &list.element[list.length++];
629
8843edf37c0e Cell 64 bit tried, but not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 625
diff changeset
77 #ifdef __CERIUM_CELL__
8843edf37c0e Cell 64 bit tried, but not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 625
diff changeset
78 elm->addr = (uint32)(unsigned long)addr;
8843edf37c0e Cell 64 bit tried, but not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 625
diff changeset
79 #else
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
80 elm->addr = addr;
629
8843edf37c0e Cell 64 bit tried, but not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 625
diff changeset
81 #endif
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
82 elm->size = size;
680
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 667
diff changeset
83 return 0;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 667
diff changeset
84 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 667
diff changeset
85
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 667
diff changeset
86 #else /* ifdef SIMPLE_TASK */
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 667
diff changeset
87
681
b976bed4e46a TaskArray structure
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 680
diff changeset
88 void
b976bed4e46a TaskArray structure
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 680
diff changeset
89 Task::set_inData_t( int index, memaddr addr, int size)
680
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 667
diff changeset
90 {
681
b976bed4e46a TaskArray structure
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 680
diff changeset
91 ListElementPtr elm = (ListElementPtr) inData(0);
b976bed4e46a TaskArray structure
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 680
diff changeset
92 #ifdef __CERIUM_CELL__
b976bed4e46a TaskArray structure
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 680
diff changeset
93 elm->addr = (uint32)(unsigned long)addr;
b976bed4e46a TaskArray structure
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 680
diff changeset
94 #else
b976bed4e46a TaskArray structure
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 680
diff changeset
95 elm->addr = addr;
b976bed4e46a TaskArray structure
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 680
diff changeset
96 #endif
b976bed4e46a TaskArray structure
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 680
diff changeset
97 elm->size = size;
b976bed4e46a TaskArray structure
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 680
diff changeset
98 }
680
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 667
diff changeset
99
681
b976bed4e46a TaskArray structure
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 680
diff changeset
100 void
680
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 667
diff changeset
101 Task::set_outData_t(int index, memaddr addr, int size)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 667
diff changeset
102 {
681
b976bed4e46a TaskArray structure
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 680
diff changeset
103 ListElementPtr elm = (ListElementPtr) outData(0);
b976bed4e46a TaskArray structure
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 680
diff changeset
104 #ifdef __CERIUM_CELL__
b976bed4e46a TaskArray structure
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 680
diff changeset
105 elm->addr = (uint32)(unsigned long)addr;
b976bed4e46a TaskArray structure
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 680
diff changeset
106 #else
b976bed4e46a TaskArray structure
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 680
diff changeset
107 elm->addr = addr;
b976bed4e46a TaskArray structure
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 680
diff changeset
108 #endif
b976bed4e46a TaskArray structure
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 680
diff changeset
109 elm->size = size;
680
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 667
diff changeset
110 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 667
diff changeset
111
682
80b23718df18 test code for TaskArray
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 681
diff changeset
112 void
683
9a6cb2439593 on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 682
diff changeset
113 Task::print()
682
80b23718df18 test code for TaskArray
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 681
diff changeset
114 {
683
9a6cb2439593 on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 682
diff changeset
115 printf("task id %d param size %d "
682
80b23718df18 test code for TaskArray
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 681
diff changeset
116 "inData size %d "
683
9a6cb2439593 on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 682
diff changeset
117 "outData size %d\n", command, param_size, inData_size, outData_size
682
80b23718df18 test code for TaskArray
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 681
diff changeset
118 );
80b23718df18 test code for TaskArray
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 681
diff changeset
119 for(int i=0; i< param_size; i++) {
683
9a6cb2439593 on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 682
diff changeset
120 printf("param %d = 0x%ld\n", i, (long)param(i));
682
80b23718df18 test code for TaskArray
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 681
diff changeset
121 }
80b23718df18 test code for TaskArray
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 681
diff changeset
122
80b23718df18 test code for TaskArray
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 681
diff changeset
123 }
680
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 667
diff changeset
124
667
d753b4f6b129 SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 629
diff changeset
125 #endif
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
126
680
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 667
diff changeset
127 /* end */