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