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