Mercurial > hg > Members > kono > Cerium
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)) |