comparison TaskManager/kernel/ppe/Task.h @ 684:458a1ad91427

Task Array generation worked.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 06 Dec 2009 23:03:28 +0900
parents 9a6cb2439593
children b386522827ae
comparison
equal deleted inserted replaced
683:9a6cb2439593 684:458a1ad91427
38 38
39 class SchedTask; 39 class SchedTask;
40 40
41 class Task { 41 class Task {
42 public: // variables 42 public: // variables
43 43 int task_size;
44 int command; 44 int command;
45 int param_size; 45 int param_size;
46 int inData_size; 46 int inData_size;
47 int outData_size; 47 int outData_size;
48 int inData_offset;
49 int outData_offset;
48 void *data[] __attribute__ ((aligned (DEFAULT_ALIGNMENT))); 50 void *data[] __attribute__ ((aligned (DEFAULT_ALIGNMENT)));
49 // memaddr param[param_size]; 51 // memaddr param[param_size];
50 // ListEelemnt inData[inData_size]; 52 // ListEelemnt inData[inData_size];
51 // ListElement outData[outData_size]; 53 // ListElement outData[outData_size];
52 54
55 // int add_outData_t(memaddr addr, int size); 57 // int add_outData_t(memaddr addr, int size);
56 58
57 void print(); 59 void print();
58 60
59 memaddr param(int index) { 61 memaddr param(int index) {
60 memaddr p = (memaddr)data; 62 return (memaddr)data + sizeof(memaddr)*index;
61 return p + sizeof(memaddr)*index;
62 } 63 }
63 memaddr inData(int index) { 64 memaddr inData(int index) {
64 return param(param_size) + sizeof(ListElement)*index; 65 memaddr p = (memaddr)data + inData_offset;
66 return p + sizeof(ListElement)*index;
65 } 67 }
66 memaddr outData(int index) { 68 memaddr outData(int index) {
67 memaddr p = inData(inData_size); 69 memaddr p = (memaddr)data + outData_offset;
68 return p + sizeof(ListElement)* index; 70 return p + sizeof(ListElement)* index;
69 } 71 }
70 72
71 void set_param_length(int i) { param_size = i; } 73 void set_param_length(int i) {
72 void set_inData_length(int length) { inData_size = length; } 74 param_size = i;
73 void set_outData_length(int length) { outData_size = length; } 75 inData_offset = round_up16(sizeof(Task))+param_size*sizeof(memaddr);
76 }
77 void set_inData_length(int length) {
78 inData_size = length;
79 if (inData_offset==0) {
80 printf("call set_param_length before\n");
81 }
82 outData_offset =
83 round_up16(inData_offset+inData_size*sizeof(ListElement));
84 }
85 void set_outData_length(int length) {
86 outData_size = length;
87 if (outData_offset==0) {
88 printf("call set_outData_length before\n");
89 }
90 task_size = round_up16(outData_offset+outData_size*sizeof(ListElement));
91 }
92 int size() {
93 if (task_size==0) {
94 printf("call set_outData_length before\n");
95 }
96 return task_size;
97 }
74 void set_inData_t( int index, memaddr addr, int size); 98 void set_inData_t( int index, memaddr addr, int size);
75 void set_outData_t(int index, memaddr addr, int size); 99 void set_outData_t(int index, memaddr addr, int size);
76 void set_task_id(int id) { command = id; } 100 void set_task_id(int id) { command = id; }
77 void set_param_t(int index, memaddr param) { 101 void set_param_t(int index, memaddr param) {
78 memaddr *p = (memaddr*)this->param(index); 102 memaddr *p = (memaddr*)this->param(index);
79 *p = param; 103 *p = param;
80 } 104 }
81 int size() {
82 return outData(outData_size)-(memaddr)data;
83 }
84 105
85 static int count_size(int params, int ins, int outs) { 106 static int count_size(int params, int ins, int outs) {
86 int size = sizeof(memaddr)*params 107 int size = round_up16(sizeof(Task))
87 + sizeof(ListElement)*ins 108 + round_up16(sizeof(memaddr)*params)
88 + sizeof(ListElement)*outs; 109 + round_up16(sizeof(ListElement)*ins)
110 + round_up16(sizeof(ListElement)*outs);
89 return size; 111 return size;
90 } 112 }
91 113
92 // #define add_param(param) add_param_t((memaddr)(param)) 114 // #define add_param(param) add_param_t((memaddr)(param))
93 #define set_param(index,param) set_param_t(index, (memaddr) (param)) 115 #define set_param(index,param) set_param_t(index, (memaddr) (param))