Mercurial > hg > Members > kono > Cerium
comparison TaskManager/kernel/ppe/Task.h @ 713:f725c6455d19
remove SIMPLE_TASK conditional
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 16 Dec 2009 15:27:46 +0900 |
parents | 61b59376aec5 |
children | 31d0a5baafdf |
comparison
equal
deleted
inserted
replaced
712:4661eaa48b77 | 713:f725c6455d19 |
---|---|
4 #include "base.h" | 4 #include "base.h" |
5 #include "types.h" | 5 #include "types.h" |
6 #include "ListData.h" | 6 #include "ListData.h" |
7 #include "SimpleTask.h" | 7 #include "SimpleTask.h" |
8 | 8 |
9 #define MAX_PARAMS 8 | |
10 | |
11 #ifndef SIMPLE_TASK | |
12 class Task : public SimpleTask { | |
13 public: // variables | |
14 | |
15 BASE_NEW_DELETE(Task); | |
16 int param_count; // 4 byte | |
17 memaddr param[MAX_PARAMS]; // 4*MAX_PARAMS byte | |
18 ListData inData __attribute__ ((aligned (DEFAULT_ALIGNMENT))); | |
19 ListData outData __attribute__ ((aligned (DEFAULT_ALIGNMENT))); | |
20 | |
21 public: // functions | |
22 int add_inData_t(memaddr addr, int size); // unsigned int ではなく 64bit | |
23 int add_outData_t(memaddr addr, int size); // unsigned int ではなく 64bit | |
24 int add_data(ListData &list, memaddr addr, int size); | |
25 int add_param_t(memaddr param); // obsolete. do not use. | |
26 int set_param_t(int index, memaddr param); | |
27 | |
28 #define add_param(param) add_param_t((memaddr)(param)) | |
29 #define set_param(index,param) set_param_t(index, (memaddr) (param)) | |
30 | |
31 #define add_inData(addr, size) \ | |
32 add_inData_t((memaddr)(addr), (size)); | |
33 #define add_outData(addr, size) \ | |
34 add_outData_t((memaddr)(addr), (size)); | |
35 }; | |
36 | |
37 #else | |
38 | 9 |
39 class SchedTask; | 10 class SchedTask; |
40 | 11 |
41 class Task { | 12 class Task { |
42 public: // variables | 13 public: // variables |
73 static int calc_size(int params, int ins, int outs) { | 44 static int calc_size(int params, int ins, int outs) { |
74 int size = round_up16(sizeof(Task)) | 45 int size = round_up16(sizeof(Task)) |
75 + round_up16(sizeof(memaddr)*params) | 46 + round_up16(sizeof(memaddr)*params) |
76 + round_up16(sizeof(ListElement)*ins) | 47 + round_up16(sizeof(ListElement)*ins) |
77 + round_up16(sizeof(ListElement)*outs); | 48 + round_up16(sizeof(ListElement)*outs); |
78 #if 0 | |
79 printf(" calc_size 0x%x\n",size); | |
80 #endif | |
81 return size; | 49 return size; |
82 } | 50 } |
83 | 51 |
84 void init(int task_id, int params, int ins, int outs) { | 52 void init(int task_id, int params, int ins, int outs) { |
85 set_task_id(task_id); | 53 set_task_id(task_id); |
87 inData_count = ins; | 55 inData_count = ins; |
88 outData_count = outs; | 56 outData_count = outs; |
89 inData_offset = round_up16(sizeof(memaddr)*params); | 57 inData_offset = round_up16(sizeof(memaddr)*params); |
90 outData_offset = round_up16(inData_offset+sizeof(ListElement)*ins); | 58 outData_offset = round_up16(inData_offset+sizeof(ListElement)*ins); |
91 task_size = round_up16(sizeof(Task)+outData_offset+sizeof(ListElement)*outs); | 59 task_size = round_up16(sizeof(Task)+outData_offset+sizeof(ListElement)*outs); |
92 #if 0 | |
93 printf("task_id %d params %d ins %d outs %d\n",task_id, params, ins, outs); | |
94 printf(" inData_offset %d\n",inData_offset); | |
95 printf(" outData_offset %d\n",outData_offset); | |
96 printf(" task_size 0x%x\n",task_size); | |
97 this->print(); | |
98 #endif | |
99 } | 60 } |
100 | 61 |
101 int size() { | 62 int size() { |
102 return task_size; | 63 return task_size; |
103 } | 64 } |
157 #define set_inData(index, addr, size) \ | 118 #define set_inData(index, addr, size) \ |
158 set_inData_t(index, (memaddr)(addr), (size)); | 119 set_inData_t(index, (memaddr)(addr), (size)); |
159 #define set_outData(index, addr, size) \ | 120 #define set_outData(index, addr, size) \ |
160 set_outData_t(index, (memaddr)(addr), (size)); | 121 set_outData_t(index, (memaddr)(addr), (size)); |
161 }; | 122 }; |
162 #endif | |
163 | 123 |
164 typedef Task* TaskPtr; | 124 typedef Task* TaskPtr; |
165 | 125 |
166 #endif | 126 #endif |