Mercurial > hg > Game > Cerium
annotate TaskManager/Cell/CellDmaManager.cc @ 2022:fac44ad2867d draft
make a sound
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 16 Jul 2014 02:50:32 +0900 |
parents | e0d465efc57e |
children |
rev | line source |
---|---|
1142
801d57ae1e29
cut compile CreatePolygonTask on spe side because not enough spe memory. We have to use code loading.
yutaka@localhost.localdomain
parents:
1125
diff
changeset
|
1 //#include <stdio.h> |
88 | 2 #include <stdlib.h> |
59 | 3 #include "CellDmaManager.h" |
736 | 4 #include "Scheduler.h" |
672 | 5 |
6 | |
1001 | 7 unsigned long long alloc_flag = 0; |
1009 | 8 |
180
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
9 /** |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
10 * DMA Load |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
11 * |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
12 * @param[in] buf Buffer of Load Data |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
13 * @param[in] addr Address of Load Data at Main Memory |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
14 * @param[in] size Size of Load Data |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
15 * @param[in] mask DMA tag |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
16 */ |
1417 | 17 void *CellDmaManager::dma_load(Scheduler *s, memaddr addr, uint32 size, uint32 mask) |
59 | 18 { |
1417 | 19 void *buf = 0; |
1221
2a4ba6366394
fix CellDmaManager
Daichi TOMA <amothic@cr.ie.u-ryukyu.ac.jp>
parents:
1213
diff
changeset
|
20 if (size == 0) return buf; |
1417 | 21 buf = s->manager->allocate(size); |
180
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
22 mfc_get((volatile void *)buf, addr, size, mask, 0, 0); |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
23 return buf; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
24 } |
970
1a4849b2acad
change pipeline and TaskArray fast
Yutaka Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
925
diff
changeset
|
25 |
1417 | 26 void *CellDmaManager::dma_load1(void *buf, memaddr addr, uint32 size, uint32 mask) |
27 { | |
28 if (size == 0) return buf; | |
29 mfc_get((volatile void *)buf, addr, size, mask, 0, 0); | |
30 return buf; | |
31 } | |
32 | |
33 | |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
34 void * |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
35 CellDmaManager::get_writebuf(Scheduler *s,memaddr addr, uint32 size) |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
36 { |
1221
2a4ba6366394
fix CellDmaManager
Daichi TOMA <amothic@cr.ie.u-ryukyu.ac.jp>
parents:
1213
diff
changeset
|
37 void *b = s->manager->allocate(size); |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
38 return b; |
59 | 39 } |
40 | |
180
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
41 /** |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
42 * DMA Store |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
43 * |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
44 * @param[in] buf Buffer of Store Data at SPE |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
45 * @param[in] addr Address of Store Data at Main Memory |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
46 * @param[in] size Size of Store Data |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
47 * @param[in] mask DMA tag |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
48 */ |
1221
2a4ba6366394
fix CellDmaManager
Daichi TOMA <amothic@cr.ie.u-ryukyu.ac.jp>
parents:
1213
diff
changeset
|
49 void* CellDmaManager::dma_store(Scheduler *s,void *buf, memaddr addr, uint32 size, uint32 mask) |
59 | 50 { |
1221
2a4ba6366394
fix CellDmaManager
Daichi TOMA <amothic@cr.ie.u-ryukyu.ac.jp>
parents:
1213
diff
changeset
|
51 if (size == 0) return buf; |
180
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
52 mfc_put((volatile void *)buf, addr, size, mask, 0, 0); |
1417 | 53 return buf; |
59 | 54 } |
55 | |
672 | 56 void CellDmaManager::dma_wait(uint32 mask) |
57 { | |
58 (this->*start_dmawait_profile)(); | |
59 mfc_write_tag_mask(1 << mask); | |
60 mfc_write_tag_update_all(); | |
61 mfc_read_tag_status(); | |
871
d30617ef4b20
fix get segment dma tag zero problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
736
diff
changeset
|
62 __asm__ __volatile__(" sync"); |
675 | 63 (this->*end_dmawait_profile)(&global_wait_time); |
672 | 64 } |
65 | |
1401 | 66 #ifndef MAIL_QUEUE |
67 | |
672 | 68 void CellDmaManager::mail_write(memaddr data) |
69 { | |
70 (this->*start_dmawait_profile)(); | |
71 spu_write_out_mbox((uint32)data); | |
871
d30617ef4b20
fix get segment dma tag zero problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
736
diff
changeset
|
72 #if 0 |
672 | 73 if (ABIBIT>32) { |
74 unsigned long data0 = (unsigned long)data; | |
871
d30617ef4b20
fix get segment dma tag zero problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
736
diff
changeset
|
75 spu_write_out_mbox((uint32)(data0>>32)); |
672 | 76 } |
871
d30617ef4b20
fix get segment dma tag zero problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
736
diff
changeset
|
77 #endif |
675 | 78 (this->*end_dmawait_profile)(&global_mail_time); |
672 | 79 } |
1401 | 80 #else |
672 | 81 |
1007 | 82 // mail を queue にしたみた。mailの書き出しの待ちあるのかわからないけど |
83 //TASK_LIST_MAIL は仕事が最後に溜まってしまうけど、MailQueueなら出来る時にmailを書き出す | |
84 //ので多少は効果あるといいな。 | |
1401 | 85 void CellDmaManager::mail_write(memaddr data) |
1007 | 86 { |
1124 | 87 unsigned long long wait = 0; |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
88 |
1009 | 89 if (0 != spu_readchcnt(SPU_WrOutMbox)) { |
1021 | 90 if (mail_queue->count()) { |
1124 | 91 (this->*start_dmawait_profile)(); |
1007 | 92 spu_write_out_mbox((uint32)data); |
1124 | 93 (this->*end_dmawait_profile)(&wait); |
94 mail_write_time += wait; | |
95 global_wait_time += wait; | |
1007 | 96 } else { |
1021 | 97 |
98 //mail_queue から poll する | |
1124 | 99 (this->*start_dmawait_profile)(); |
1021 | 100 spu_write_out_mbox((uint32)mail_queue->recv()); |
1124 | 101 (this->*end_dmawait_profile)(&wait); |
102 mail_write_time += wait; | |
103 global_wait_time += wait; | |
1021 | 104 //mail_queue に加える |
105 mail_queue->send(data); | |
106 | |
1007 | 107 } |
108 } else { | |
1021 | 109 |
110 mail_queue->send(data); | |
111 | |
1007 | 112 } |
1124 | 113 |
1007 | 114 } |
1401 | 115 #endif |
1007 | 116 |
1125 | 117 // tasklist がもうない場合に、MailQueue 全部を書き出す |
1007 | 118 void CellDmaManager::mail_write_finish_list(memaddr data) |
119 { | |
120 | |
1417 | 121 unsigned long long wait = 0; |
1007 | 122 |
1021 | 123 while (mail_queue->count()) { |
1124 | 124 (this->*start_dmawait_profile)(); |
125 spu_write_out_mbox((uint32)mail_queue->recv()); | |
126 (this->*end_dmawait_profile)(&wait); | |
1021 | 127 |
1124 | 128 global_mail_time += wait; |
129 finish_mail_write_time += wait; | |
1021 | 130 |
1007 | 131 } |
132 | |
1124 | 133 (this->*start_dmawait_profile)(); |
1007 | 134 spu_write_out_mbox((uint32)data); |
1124 | 135 (this->*end_dmawait_profile)(&wait); |
1007 | 136 |
1124 | 137 global_mail_time += wait; |
138 finish_mail_write_time += wait; | |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
139 |
1007 | 140 } |
141 | |
672 | 142 memaddr CellDmaManager::mail_read() |
143 { | |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
144 |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
145 |
1124 | 146 unsigned long long wait = 0; |
147 | |
672 | 148 (this->*start_dmawait_profile)(); |
149 memaddr data = (memaddr)spu_read_in_mbox(); | |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
150 |
871
d30617ef4b20
fix get segment dma tag zero problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
736
diff
changeset
|
151 #if 0 |
672 | 152 if (ABIBIT>32) { |
871
d30617ef4b20
fix get segment dma tag zero problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
736
diff
changeset
|
153 data += (spu_read_in_mbox()<<32); |
672 | 154 } |
871
d30617ef4b20
fix get segment dma tag zero problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
736
diff
changeset
|
155 #endif |
1124 | 156 (this->*end_dmawait_profile)(&wait); |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
157 |
1124 | 158 global_mail_time += wait; |
159 mail_read_time += wait; | |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
160 |
672 | 161 return data; |
162 } | |
163 | |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
164 memaddr CellDmaManager::task_list_mail_read() |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
165 { |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
166 |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
167 unsigned long long wait = 0; |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
168 |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
169 (this->*start_dmawait_profile)(); |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
170 memaddr data = (memaddr)spu_read_in_mbox(); |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
171 (this->*end_dmawait_profile)(&wait); |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
172 |
1123 | 173 |
1124 | 174 task_list_mail_read_time += wait; |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
175 global_mail_time += wait; |
1123 | 176 task_list_read_count += 1; |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
177 |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
178 return data; |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
179 } |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
180 |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
181 |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
182 |
1417 | 183 void *CellDmaManager::dma_loadList(Scheduler *s, ListDataPtr list, uint32 mask) |
672 | 184 { |
1417 | 185 void *buff = s->manager->allocate(list->size); |
672 | 186 mfc_getl(buff, 0, list->element, sizeof(mfc_list_element_t)*list->length, |
187 mask, 0, 0); | |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
188 return buff; |
672 | 189 } |
190 | |
191 void CellDmaManager::dma_storeList(ListDataPtr list, void *buff, uint32 mask) | |
192 { | |
193 mfc_putl(buff, 0, list->element, sizeof(mfc_list_element_t)*list->length, | |
194 mask, 0, 0); | |
195 } | |
196 | |
197 CellDmaManager::CellDmaManager() | |
198 { | |
1009 | 199 |
1021 | 200 mail_queue = new MailManager(); |
672 | 201 stop_profile(); |
202 } | |
203 void | |
204 CellDmaManager::start_profile() | |
205 { | |
925
292bb8c79cdb
add profile in Redering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
924
diff
changeset
|
206 global_busy_time = 0; |
292bb8c79cdb
add profile in Redering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
924
diff
changeset
|
207 global_mail_time = 0; |
292bb8c79cdb
add profile in Redering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
924
diff
changeset
|
208 global_wait_time = 0; |
1124 | 209 task_list_mail_read_time = 0; |
210 finish_mail_write_time = 0; | |
1123 | 211 task_list_read_count = 0; |
1124 | 212 |
213 mail_read_time = 0; | |
214 mail_write_time = 0; | |
215 | |
672 | 216 start_dmawait_profile = &CellDmaManager::do_start_dmawait_profile; |
970
1a4849b2acad
change pipeline and TaskArray fast
Yutaka Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
925
diff
changeset
|
217 end_dmawait_profile = &CellDmaManager::do_end_dmawait_profile; |
1a4849b2acad
change pipeline and TaskArray fast
Yutaka Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
925
diff
changeset
|
218 |
672 | 219 } |
220 | |
221 void | |
222 CellDmaManager::stop_profile() | |
223 { | |
224 start_dmawait_profile = &CellDmaManager::null_start_dmawait_profile; | |
225 end_dmawait_profile = &CellDmaManager::null_end_dmawait_profile; | |
226 } | |
227 | |
59 | 228 /** |
180
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
229 * DMA Wait |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
230 * |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
231 * @param[in] mask Tag for Wait DMA process |
59 | 232 */ |
275 | 233 void |
672 | 234 CellDmaManager::do_start_dmawait_profile() |
242 | 235 { |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
236 |
242 | 237 wait_time = spu_readch(SPU_RdDec); |
238 global_busy_time += busy_time - wait_time; | |
1071 | 239 //printf("busy_time = %d, wait_time = %d\n", busy_time, wait_time); |
242 | 240 spu_writech(SPU_WrDec, 0xffffffff); |
999
aed8b3ca5537
Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents:
970
diff
changeset
|
241 |
aed8b3ca5537
Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents:
970
diff
changeset
|
242 // Measurement of mainMem_alloc |
aed8b3ca5537
Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents:
970
diff
changeset
|
243 mainMemalloc_time += (alloc_busy_time - wait_time)*alloc_flag; |
242 | 244 } |
245 | |
970
1a4849b2acad
change pipeline and TaskArray fast
Yutaka Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
925
diff
changeset
|
246 |
275 | 247 void |
676 | 248 CellDmaManager::do_end_dmawait_profile(unsigned long long *counter) |
242 | 249 { |
250 wait_time = spu_readch(SPU_RdDec); | |
1053 | 251 //printf("wait_time = %d", wait_time); |
675 | 252 *counter += 0xffffffff - wait_time; |
242 | 253 busy_time = wait_time; |
970
1a4849b2acad
change pipeline and TaskArray fast
Yutaka Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
925
diff
changeset
|
254 |
999
aed8b3ca5537
Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents:
970
diff
changeset
|
255 // Measurement of mainMem_alloc |
aed8b3ca5537
Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents:
970
diff
changeset
|
256 alloc_busy_time = wait_time; |
242 | 257 } |
239 | 258 |
672 | 259 void CellDmaManager::null_start_dmawait_profile() {} |
676 | 260 void CellDmaManager::null_end_dmawait_profile(unsigned long long *counter) {} |
672 | 261 |
239 | 262 void |
736 | 263 CellDmaManager::show_dma_wait(Scheduler *s, int cpu) |
255 | 264 { |
265 | |
675 | 266 double r = ((double)global_busy_time)/((double)( |
267 global_busy_time+global_wait_time+global_mail_time | |
676 | 268 ))*100.0; |
924 | 269 |
270 double d = ((double)global_wait_time)/((double)( | |
271 global_busy_time+global_wait_time+global_mail_time | |
272 ))*100.0; | |
273 | |
274 double m = ((double)global_mail_time)/((double)( | |
275 global_busy_time+global_wait_time+global_mail_time | |
276 ))*100.0; | |
277 | |
1124 | 278 double tr = ((double)task_list_mail_read_time)/((double)( |
279 global_busy_time+global_wait_time+global_mail_time | |
280 ))*100.0; | |
281 | |
282 double tw = ((double)finish_mail_write_time)/((double)( | |
283 global_busy_time+global_wait_time+global_mail_time | |
284 ))*100.0; | |
285 | |
286 double mr = ((double)mail_read_time)/((double)( | |
287 global_busy_time+global_wait_time+global_mail_time | |
288 ))*100.0; | |
289 | |
290 double mw = ((double)mail_write_time)/((double)( | |
1025 | 291 global_busy_time+global_wait_time+global_mail_time |
292 ))*100.0; | |
293 | |
294 | |
1124 | 295 s->printf("spu%d:\n busy_time = %lld" |
924 | 296 " wait_time = %lld(%.3g%%), " |
297 " mail_time = %lld(%.3g%%), " | |
1124 | 298 " mail_read_time = %lld(%.3g%%), " |
299 " mail_write_time = %lld(%.3g%%),\n" | |
300 " task_list_mail_read_time = %lld(%.3g%%), " | |
301 " finish_mail_write_time = %lld(%.3g%%) " | |
302 " busy_ratio = %.3g%%, \n" | |
1123 | 303 " task_list_read_count = %d" |
304 " average_tasklist_mail_time = %lld" | |
999
aed8b3ca5537
Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents:
970
diff
changeset
|
305 " mainMem_alloc_time = %lld\n" |
970
1a4849b2acad
change pipeline and TaskArray fast
Yutaka Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
925
diff
changeset
|
306 ,cpu, global_busy_time, |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
307 global_wait_time, d, global_mail_time, m, |
1124 | 308 mail_read_time, mr, |
309 mail_write_time, mw, | |
310 task_list_mail_read_time, tr, | |
311 finish_mail_write_time, tw, | |
312 r, | |
1123 | 313 task_list_read_count, |
1124 | 314 task_list_mail_read_time / task_list_read_count, |
999
aed8b3ca5537
Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents:
970
diff
changeset
|
315 mainMemalloc_time); |
925
292bb8c79cdb
add profile in Redering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
924
diff
changeset
|
316 |
292bb8c79cdb
add profile in Redering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
924
diff
changeset
|
317 global_busy_time = 0; |
292bb8c79cdb
add profile in Redering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
924
diff
changeset
|
318 global_mail_time = 0; |
292bb8c79cdb
add profile in Redering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
924
diff
changeset
|
319 global_wait_time = 0; |
1124 | 320 |
321 mail_read_time = 0; | |
322 mail_write_time = 0; | |
323 | |
324 task_list_mail_read_time = 0; | |
325 finish_mail_write_time = 0; | |
326 task_list_read_count = 0; | |
327 | |
999
aed8b3ca5537
Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents:
970
diff
changeset
|
328 mainMemalloc_time = 0; |
aed8b3ca5537
Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents:
970
diff
changeset
|
329 alloc_flag = 0; |
255 | 330 } |
331 | |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
332 uint32 |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
333 CellDmaManager::get_tag() |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
334 { |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
335 static int tag = 16; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
336 tag ++; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
337 tag &= 0x0f; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
338 return tag+16; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
339 } |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
340 |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
341 /** |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
342 * DMA buffer offset in rbuf |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
343 */ |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
344 void |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
345 CellDmaManager::bound(ListData *list) |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
346 { |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
347 ListElement *elm = list->element; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
348 int *bound = list->bound; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
349 int offset=0; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
350 for(int i=0;i<list->length;i++) { |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
351 bound[i] = offset; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
352 offset += elm[i].size; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
353 } |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
354 } |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
355 |
604 | 356 |
357 /* end */ |