comparison TaskManager/kernel/ppe/Task.h @ 696:b5c3ef336878

on going...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 13 Dec 2009 10:49:07 +0900
parents cbcf0182635e
children 257ad1a518e3
comparison
equal deleted inserted replaced
695:cbcf0182635e 696:b5c3ef336878
11 #ifndef SIMPLE_TASK 11 #ifndef SIMPLE_TASK
12 class Task : public SimpleTask { 12 class Task : public SimpleTask {
13 public: // variables 13 public: // variables
14 14
15 BASE_NEW_DELETE(Task); 15 BASE_NEW_DELETE(Task);
16 int param_size; // 4 byte 16 int param_count; // 4 byte
17 memaddr param[MAX_PARAMS]; // 4*MAX_PARAMS byte 17 memaddr param[MAX_PARAMS]; // 4*MAX_PARAMS byte
18 ListData inData __attribute__ ((aligned (DEFAULT_ALIGNMENT))); 18 ListData inData __attribute__ ((aligned (DEFAULT_ALIGNMENT)));
19 ListData outData __attribute__ ((aligned (DEFAULT_ALIGNMENT))); 19 ListData outData __attribute__ ((aligned (DEFAULT_ALIGNMENT)));
20 20
21 public: // functions 21 public: // functions
40 40
41 class Task { 41 class Task {
42 public: // variables 42 public: // variables
43 int task_size; 43 int task_size;
44 int command; 44 int command;
45 int param_size; 45 int param_count;
46 int inData_size; 46 int inData_count;
47 int outData_size; 47 int outData_count;
48 int inData_offset; 48 int inData_offset;
49 int outData_offset; 49 int outData_offset;
50 void *data[] __attribute__ ((aligned (DEFAULT_ALIGNMENT))); 50 void *data[] __attribute__ ((aligned (DEFAULT_ALIGNMENT)));
51 // memaddr param[param_size]; 51 // memaddr param[param_count];
52 // ListEelemnt inData[inData_size]; 52 // ListEelemnt inData[inData_count];
53 // ListElement outData[outData_size]; 53 // ListElement outData[outData_count];
54 54
55 public: // functions 55 public: // functions
56 // int add_inData_t(memaddr addr, int size); 56 // int add_inData_t(memaddr addr, int size);
57 // int add_outData_t(memaddr addr, int size); 57 // int add_outData_t(memaddr addr, int size);
58 58
59 void print(); 59 void print();
60 60
61 /*
61 memaddr param(int index) { 62 memaddr param(int index) {
62 return (memaddr)data + sizeof(memaddr)*index; 63 return (memaddr)data + sizeof(memaddr)*index;
63 } 64 }
64 memaddr inData(int index) { 65 memaddr inData(int index) {
65 memaddr p = (memaddr)data + inData_offset; 66 memaddr p = (memaddr)data + inData_offset;
67 } 68 }
68 memaddr outData(int index) { 69 memaddr outData(int index) {
69 memaddr p = (memaddr)data + outData_offset; 70 memaddr p = (memaddr)data + outData_offset;
70 return p + sizeof(ListElement)* index; 71 return p + sizeof(ListElement)* index;
71 } 72 }
73 */
72 74
73 ListElement *inListData() { 75 ListElement *inListData() {
74 memaddr data = (memaddr)this; 76 memaddr data = (memaddr)this;
75 return (ListElement*)(data+inData_offset); 77 ListEelement *list = (ListElement *)(data+inData_offset);
78 return list;
76 } 79 }
77 80
78 ListElement *outListData() { 81 ListElement *outListData() {
79 memaddr data = (memaddr)this; 82 memaddr data = (memaddr)this;
80 return (ListElement*)(data+outData_offset); 83 ListEelement *list = (ListElement *)(data+outData_offset);
84 return list;
81 } 85 }
82 86
83 void set_param_length(int i) { 87 void set_param_length(int i) {
84 param_size = i; 88 param_count = i;
85 inData_offset = round_up16(sizeof(Task))+param_size*sizeof(memaddr); 89 inData_offset = round_up16(sizeof(Task))+param_count*sizeof(memaddr);
86 } 90 }
87 void set_inData_length(int length) { 91 void set_inData_length(int length) {
88 inData_size = length; 92 inData_count = length;
89 if (inData_offset==0) { 93 if (inData_offset==0) {
90 printf("call set_param_length before\n"); 94 printf("call set_param_length before\n");
91 } 95 }
92 outData_offset = 96 outData_offset =
93 round_up16(inData_offset+inData_size*sizeof(ListElement)); 97 round_up16(inData_offset+inData_count*sizeof(ListElement));
94 } 98 }
95 void set_outData_length(int length) { 99 void set_outData_length(int length) {
96 outData_size = length; 100 outData_count = length;
97 if (outData_offset==0) { 101 if (outData_offset==0) {
98 printf("call set_outData_length before\n"); 102 printf("call set_outData_length before\n");
99 } 103 }
100 task_size = round_up16(outData_offset+outData_size*sizeof(ListElement)); 104 task_size = round_up16(outData_offset+outData_count*sizeof(ListElement));
101 } 105 }
102 int size() { 106 int size() {
103 if (task_size==0) { 107 if (task_size==0) {
104 printf("call set_outData_length before\n"); 108 printf("call set_outData_length before\n");
105 } 109 }
106 return task_size; 110 return task_size;
107 } 111 }
112 int inData_total_size() ;
113 int outData_total_size() ;
114
108 void set_inData_t( int index, memaddr addr, int size); 115 void set_inData_t( int index, memaddr addr, int size);
109 void set_outData_t(int index, memaddr addr, int size); 116 void set_outData_t(int index, memaddr addr, int size);
110 void set_task_id(int id) { command = id; } 117 void set_task_id(int id) { command = id; }
111 void set_param_t(int index, memaddr param) { 118 void set_param_t(int index, memaddr param) {
112 memaddr *p = (memaddr*)this->param(index); 119 memaddr *p = (memaddr*)this->param(index);
113 *p = param; 120 *p = param;
114 } 121 }
115 122
116 static int count_size(int params, int ins, int outs) { 123 static int calc_size(int params, int ins, int outs) {
117 int size = round_up16(sizeof(Task)) 124 int size = round_up16(sizeof(Task))
118 + round_up16(sizeof(memaddr)*params) 125 + round_up16(sizeof(memaddr)*params)
119 + round_up16(sizeof(ListElement)*ins) 126 + round_up16(sizeof(ListElement)*ins)
120 + round_up16(sizeof(ListElement)*outs); 127 + round_up16(sizeof(ListElement)*outs);
121 return size; 128 return size;