Mercurial > hg > Game > Cerium
annotate TaskManager/Fifo/FifoDmaManager.cc @ 1717:5d68a55d5561 draft
fix profile
author | Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 15 Oct 2013 17:29:37 +0900 |
parents | 7673e2ad2623 |
children | 93f051a51d9e |
rev | line source |
---|---|
109 | 1 #include <stdio.h> |
2 #include <stdlib.h> | |
3 #include <string.h> | |
4 #include "FifoDmaManager.h" | |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
5 #include "Scheduler.h" |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
6 #include "TaskManagerImpl.h" |
1400 | 7 #include "gettime.h" |
109 | 8 |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
9 void * |
1417 | 10 FifoDmaManager::dma_load(Scheduler *s, memaddr addr, uint32 size, uint32 mask) |
11 { | |
12 void *buf = 0; | |
13 if (size == 0) return buf; | |
14 | |
15 unsigned long long wait = 0; | |
1698 | 16 (*this->start_dmawait_profile)(); |
1417 | 17 |
18 buf = s->manager->allocate(size); | |
19 memcpy(buf, (void*)addr, size); | |
20 | |
1698 | 21 (*this->end_dmawait_profile)(&wait); |
1417 | 22 global_load_time += wait; |
23 dma_load_time += wait; | |
24 | |
25 return buf; | |
26 } | |
27 | |
28 void * | |
29 FifoDmaManager::dma_load1(void *buf, memaddr addr, uint32 size, uint32 mask) | |
109 | 30 { |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
31 if (size == 0) return buf; |
1309 | 32 |
1417 | 33 unsigned long long wait = 0; |
1698 | 34 (*this->start_dmawait_profile)(); |
1309 | 35 |
109 | 36 memcpy(buf, (void*)addr, size); |
1309 | 37 |
1698 | 38 (*this->end_dmawait_profile)(&wait); |
1417 | 39 global_load_time += wait; |
40 dma_load_time += wait; | |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
41 return buf; |
109 | 42 } |
43 | |
1417 | 44 |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
45 void * |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
46 FifoDmaManager::get_writebuf(Scheduler *s,memaddr addr, uint32 size) |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
47 { |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
48 void *b = s->manager->allocate(size); |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
49 return b; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
50 } |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
51 |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
52 void * |
603
57ec231bc8ac
long -> memaddr (64 or 32)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
602
diff
changeset
|
53 FifoDmaManager::dma_store(void *buf, memaddr addr, uint32 size, uint32 mask) |
109 | 54 { |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
55 if (size == 0) return buf; |
1309 | 56 |
1417 | 57 unsigned long long wait = 0; |
1698 | 58 (*this->start_dmawait_profile)(); |
1309 | 59 |
1417 | 60 memcpy((void*)addr, buf, size); |
1309 | 61 |
1698 | 62 (*this->end_dmawait_profile)(&wait); |
1417 | 63 global_store_time += wait; |
64 dma_store_time += wait; | |
1309 | 65 |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
66 return buf; |
109 | 67 } |
68 | |
69 /** | |
321 | 70 * mask で設定した DMA 転送の完了を待つ |
109 | 71 */ |
72 void | |
73 FifoDmaManager::dma_wait(uint32 mask) | |
74 { | |
75 } | |
76 | |
77 | |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
78 void * |
1417 | 79 FifoDmaManager::dma_loadList(Scheduler *s, ListDataPtr list, uint32 mask) |
109 | 80 { |
1417 | 81 unsigned long long wait = 0; |
1698 | 82 (*this->start_dmawait_profile)(); |
1309 | 83 |
109 | 84 int list_size = list->length; |
602
92b0d490e839
64bit mode try... not worked.
e075740@nw0740.st.ie.u-ryukyu.ac.jp
parents:
321
diff
changeset
|
85 long bound; |
109 | 86 |
1417 | 87 void *buff = s->manager->allocate(list->size); |
602
92b0d490e839
64bit mode try... not worked.
e075740@nw0740.st.ie.u-ryukyu.ac.jp
parents:
321
diff
changeset
|
88 bound = (long)(buff); |
109 | 89 |
90 for (int i = 0; i < list_size; i++) { | |
1401 | 91 ListElementPtr elm = &list->element[i]; |
92 memcpy((void*)bound, (void*)elm->addr, elm->size); | |
93 bound += elm->size; | |
109 | 94 } |
1309 | 95 |
1698 | 96 (*this->end_dmawait_profile)(&wait); |
1417 | 97 global_load_time += wait; |
98 dma_loadList_time += wait; | |
1309 | 99 |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
100 return buff; |
109 | 101 } |
102 | |
103 void | |
104 FifoDmaManager::dma_storeList(ListDataPtr list, void *buff, uint32 mask) | |
105 { | |
1417 | 106 unsigned long long wait = 0; |
1698 | 107 (*this->start_dmawait_profile)(); |
1309 | 108 |
109 | 109 int list_size = list->length; |
603
57ec231bc8ac
long -> memaddr (64 or 32)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
602
diff
changeset
|
110 memaddr bound; |
109 | 111 |
603
57ec231bc8ac
long -> memaddr (64 or 32)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
602
diff
changeset
|
112 bound = (memaddr)(buff); |
109 | 113 |
114 for (int i = 0; i < list_size; i++) { | |
1401 | 115 ListElementPtr elm = &list->element[i]; |
116 memcpy((void*)elm->addr, (void*)bound, elm->size); | |
117 bound += elm->size; | |
1111 | 118 } |
1309 | 119 |
1698 | 120 (*this->end_dmawait_profile)(&wait); |
1417 | 121 global_store_time += wait; |
122 dma_storeList_time += wait; | |
1309 | 123 } |
124 | |
125 void | |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
126 FifoDmaManager::mail_write(memaddr data) |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
127 { |
1417 | 128 unsigned long long wait = 0; |
1698 | 129 (*this->start_dmawait_profile)(); |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
130 |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
131 mail_queue1->send(data); |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
132 |
1698 | 133 (*this->end_dmawait_profile)(&wait); |
1417 | 134 global_mail_time += wait; |
135 mail_write_time += wait; | |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
136 } |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
137 |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
138 void |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
139 FifoDmaManager::mail_write_finish_list(memaddr data) |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
140 { |
1417 | 141 unsigned long long wait = 0; |
1698 | 142 (*this->start_dmawait_profile)(); |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
143 |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
144 mail_queue1->send(data); |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
145 |
1698 | 146 (*this->end_dmawait_profile)(&wait); |
1417 | 147 global_mail_time += wait; |
148 mail_write_time += wait; | |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
149 } |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
150 |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
151 memaddr |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
152 FifoDmaManager::mail_read() |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
153 { |
1417 | 154 unsigned long long wait = 0; |
1698 | 155 (*this->start_dmawait_profile)(); |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
156 |
1417 | 157 memaddr data; |
158 data = mail_queue2->recv(); | |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
159 |
1698 | 160 (*this->end_dmawait_profile)(&wait); |
1417 | 161 global_mail_time += wait; |
162 mail_read_time += wait; | |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
163 |
1417 | 164 return data; |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
165 } |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
166 |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
167 memaddr |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
168 FifoDmaManager::task_list_mail_read() |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
169 { |
1417 | 170 unsigned long long wait = 0; |
1698 | 171 (*this->start_dmawait_profile)(); |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
172 |
1417 | 173 memaddr data; |
174 data = mail_queue2->recv(); | |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
175 |
1698 | 176 (*this->end_dmawait_profile)(&wait); |
1417 | 177 global_mail_time += wait; |
178 mail_read_time += wait; | |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
179 |
1417 | 180 return data; |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
181 } |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
182 |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
183 void |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
184 FifoDmaManager::mail_write_from_host(memaddr data) |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
185 { |
1417 | 186 unsigned long long wait = 0; |
1698 | 187 (*this->start_dmawait_profile)(); |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
188 |
1417 | 189 mail_queue2->send(data); |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
190 |
1698 | 191 (*this->end_dmawait_profile)(&wait); |
1417 | 192 global_mail_time += wait; |
193 mail_write_from_host_time += wait; | |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
194 } |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
195 |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
196 memaddr |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
197 FifoDmaManager::mail_read_from_host() |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
198 { |
1417 | 199 unsigned long long wait = 0; |
1698 | 200 (*this->start_dmawait_profile)(); |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
201 |
1417 | 202 memaddr data; |
203 data = mail_queue1->recv(); | |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
204 |
1698 | 205 (*this->end_dmawait_profile)(&wait); |
1417 | 206 global_mail_time += wait; |
207 mail_read_from_host_time += wait; | |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
208 |
1417 | 209 return data; |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
210 } |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
211 |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
212 int |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
213 FifoDmaManager::has_mail_from_host() |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
214 { |
1461 | 215 return mail_queue1->count(); |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
216 } |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
217 |
1698 | 218 static unsigned long long start_time,stop_time; |
219 void | |
220 do_start_dmawait_profile() | |
221 { | |
222 start_time = gettime(); | |
223 } | |
224 | |
225 void | |
226 do_end_dmawait_profile(unsigned long long *counter) | |
227 { | |
228 stop_time = gettime(); | |
229 *counter += stop_time - start_time; | |
230 } | |
231 | |
232 void null_start_dmawait_profile() {} | |
233 void null_end_dmawait_profile(unsigned long long *counter) {} | |
234 | |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
235 void |
1309 | 236 FifoDmaManager::start_profile() |
237 { | |
1698 | 238 global_start_time = gettime(); |
1417 | 239 global_busy_time = 0; |
240 global_load_time = 0; | |
241 global_store_time = 0; | |
242 global_mail_time = 0; | |
243 dma_load_time = 0; | |
244 dma_store_time = 0; | |
245 dma_loadList_time = 0; | |
246 dma_storeList_time = 0; | |
247 mail_read_time = 0; | |
248 mail_write_time = 0; | |
249 mail_read_from_host_time = 0; | |
250 mail_write_from_host_time = 0; | |
1309 | 251 |
1698 | 252 start_dmawait_profile = &do_start_dmawait_profile; |
253 end_dmawait_profile = &do_end_dmawait_profile; | |
1717 | 254 (*this->start_dmawait_profile)(); |
1417 | 255 stop_time = gettime(); |
1309 | 256 } |
257 | |
258 void | |
259 FifoDmaManager::stop_profile() | |
260 { | |
1698 | 261 start_dmawait_profile = &null_start_dmawait_profile; |
262 end_dmawait_profile = &null_end_dmawait_profile; | |
1309 | 263 } |
264 | |
265 void | |
266 FifoDmaManager::show_dma_wait(Scheduler *s, int cpu) | |
267 { | |
1698 | 268 unsigned long long all_time = gettime() - global_start_time; |
1309 | 269 |
1417 | 270 double busy = ((double)global_busy_time)/((double)all_time)*100.0; |
271 double load = ((double)global_load_time)/((double)all_time)*100.0; | |
272 double store = ((double)global_store_time)/((double)all_time)*100.0; | |
273 double mail = ((double)global_mail_time)/((double)all_time)*100.0; | |
274 double read = ((double)mail_read_time)/((double)all_time)*100.0; | |
275 double write = ((double)mail_write_time)/((double)all_time)*100.0; | |
276 double read_from_host = ((double)mail_read_from_host_time)/((double)all_time)*100.0; | |
277 double write_from_host = ((double)mail_write_from_host_time)/((double)all_time)*100.0; | |
1309 | 278 |
279 | |
1417 | 280 s->printf("cpu%d:\n busy_time = %lld(%.3g%%)\n" |
281 " load_time = %lld(%.3g%%), " | |
282 " store_time = %lld(%.3g%%), " | |
283 " mail_time = %lld(%.3g%%) \n" | |
284 " mail_read_time = %lld(%.3g%%), " | |
285 " mail_write_time = %lld(%.3g%%)\n" | |
286 " mail_read_from_host_time = %lld(%.3g%%), " | |
287 " mail_write_from_host_time = %lld(%.3g%%)\n" | |
288 ,cpu, global_busy_time, busy, | |
289 global_load_time, load, | |
290 global_store_time, store, | |
291 global_mail_time, mail, | |
292 mail_read_time, read, | |
293 mail_write_time, write, | |
294 mail_read_from_host_time, read_from_host, | |
295 mail_write_from_host_time, write_from_host); | |
1309 | 296 |
1417 | 297 global_busy_time = 0; |
298 global_load_time = 0; | |
299 global_store_time = 0; | |
300 global_mail_time = 0; | |
301 dma_load_time = 0; | |
302 dma_store_time = 0; | |
303 dma_loadList_time = 0; | |
304 dma_storeList_time = 0; | |
305 mail_read_time = 0; | |
306 mail_write_time = 0; | |
307 mail_read_from_host_time = 0; | |
308 mail_write_from_host_time = 0; | |
109 | 309 } |
643 | 310 |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
311 uint32 |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
312 FifoDmaManager::get_tag() |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
313 { |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
314 static int tag = 16; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
315 tag ++; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
316 tag &= 0x0f; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
317 return tag+16; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
318 } |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
319 |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
320 /** |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
321 * DMA buffer offset in rbuf |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
322 */ |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
323 void |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
324 FifoDmaManager::bound(ListData *list) |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
325 { |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
326 ListElement *elm = list->element; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
327 int *bound = list->bound; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
328 int offset=0; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
329 for(int i=0;i<list->length;i++) { |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
330 bound[i] = offset; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
331 offset += elm[i].size; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
332 } |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
333 } |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1111
diff
changeset
|
334 |
643 | 335 /* end */ |