Mercurial > hg > Game > Cerium
annotate TaskManager/Fifo/FifoDmaManager.cc @ 1809:138e7edff3ae draft
fix bound int size
author | Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 11 Dec 2013 18:42:34 +0900 |
parents | 93f051a51d9e |
children | 5238ca826d6e |
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; | |
1718 | 16 (*this->start_dmawait_profile)(&start_time); |
1417 | 17 |
18 buf = s->manager->allocate(size); | |
19 memcpy(buf, (void*)addr, size); | |
20 | |
1718 | 21 (*this->end_dmawait_profile)(&wait,&start_time,&stop_time); |
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; |
1718 | 34 (*this->start_dmawait_profile)(&start_time); |
1309 | 35 |
109 | 36 memcpy(buf, (void*)addr, size); |
1309 | 37 |
1718 | 38 (*this->end_dmawait_profile)(&wait,&start_time,&stop_time); |
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; |
1718 | 58 (*this->start_dmawait_profile)(&start_time); |
1309 | 59 |
1417 | 60 memcpy((void*)addr, buf, size); |
1309 | 61 |
1718 | 62 (*this->end_dmawait_profile)(&wait,&start_time,&stop_time); |
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; |
1718 | 82 (*this->start_dmawait_profile)(&start_time); |
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 |
1718 | 96 (*this->end_dmawait_profile)(&wait,&start_time,&stop_time); |
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; |
1718 | 107 (*this->start_dmawait_profile)(&start_time); |
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 |
1718 | 120 (*this->end_dmawait_profile)(&wait,&start_time,&stop_time); |
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; |
1718 | 129 (*this->start_dmawait_profile)(&start_time); |
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 |
1718 | 133 (*this->end_dmawait_profile)(&wait,&start_time,&stop_time); |
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; |
1718 | 142 (*this->start_dmawait_profile)(&start_time); |
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 |
1718 | 146 (*this->end_dmawait_profile)(&wait,&start_time,&stop_time); |
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; |
1718 | 155 (*this->start_dmawait_profile)(&start_time); |
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 |
1718 | 160 (*this->end_dmawait_profile)(&wait,&start_time,&stop_time); |
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; |
1718 | 171 (*this->start_dmawait_profile)(&start_time); |
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 |
1718 | 176 (*this->end_dmawait_profile)(&wait,&start_time,&stop_time); |
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; |
1718 | 187 (*this->start_dmawait_profile)(&start_time); |
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 |
1718 | 191 (*this->end_dmawait_profile)(&wait,&start_time,&stop_time); |
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; |
1718 | 200 (*this->start_dmawait_profile)(&start_time); |
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 |
1718 | 205 (*this->end_dmawait_profile)(&wait,&start_time,&stop_time); |
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 void |
1718 | 219 do_start_dmawait_profile(unsigned long long *start) |
1698 | 220 { |
1718 | 221 *start = gettime(); |
1698 | 222 } |
223 | |
224 void | |
1718 | 225 do_end_dmawait_profile(unsigned long long *counter,unsigned long long *start,unsigned long long *stop) |
1698 | 226 { |
1718 | 227 *stop = gettime(); |
228 *counter += *stop - *start; | |
1698 | 229 } |
230 | |
1718 | 231 void null_start_dmawait_profile(unsigned long long *start) {} |
232 void null_end_dmawait_profile(unsigned long long *counter,unsigned long long *start,unsigned long long *stop) {} | |
1698 | 233 |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1369
diff
changeset
|
234 void |
1309 | 235 FifoDmaManager::start_profile() |
236 { | |
1698 | 237 global_start_time = gettime(); |
1417 | 238 global_busy_time = 0; |
239 global_load_time = 0; | |
240 global_store_time = 0; | |
241 global_mail_time = 0; | |
242 dma_load_time = 0; | |
243 dma_store_time = 0; | |
244 dma_loadList_time = 0; | |
245 dma_storeList_time = 0; | |
246 mail_read_time = 0; | |
247 mail_write_time = 0; | |
248 mail_read_from_host_time = 0; | |
249 mail_write_from_host_time = 0; | |
1309 | 250 |
1698 | 251 start_dmawait_profile = &do_start_dmawait_profile; |
252 end_dmawait_profile = &do_end_dmawait_profile; | |
1718 | 253 (*this->start_dmawait_profile)(&start_time); |
1309 | 254 } |
255 | |
256 void | |
257 FifoDmaManager::stop_profile() | |
258 { | |
1698 | 259 start_dmawait_profile = &null_start_dmawait_profile; |
260 end_dmawait_profile = &null_end_dmawait_profile; | |
1309 | 261 } |
262 | |
263 void | |
264 FifoDmaManager::show_dma_wait(Scheduler *s, int cpu) | |
265 { | |
1698 | 266 unsigned long long all_time = gettime() - global_start_time; |
1718 | 267 |
1417 | 268 double busy = ((double)global_busy_time)/((double)all_time)*100.0; |
269 double load = ((double)global_load_time)/((double)all_time)*100.0; | |
270 double store = ((double)global_store_time)/((double)all_time)*100.0; | |
271 double mail = ((double)global_mail_time)/((double)all_time)*100.0; | |
272 double read = ((double)mail_read_time)/((double)all_time)*100.0; | |
273 double write = ((double)mail_write_time)/((double)all_time)*100.0; | |
274 double read_from_host = ((double)mail_read_from_host_time)/((double)all_time)*100.0; | |
275 double write_from_host = ((double)mail_write_from_host_time)/((double)all_time)*100.0; | |
1309 | 276 |
277 | |
1417 | 278 s->printf("cpu%d:\n busy_time = %lld(%.3g%%)\n" |
1718 | 279 " load_time = %lld(%.3g%%), " |
280 " store_time = %lld(%.3g%%), " | |
281 " mail_time = %lld(%.3g%%) \n" | |
282 " mail_read_time = %lld(%.3g%%), " | |
283 " mail_write_time = %lld(%.3g%%)\n" | |
284 " mail_read_from_host_time = %lld(%.3g%%), " | |
285 " mail_write_from_host_time = %lld(%.3g%%)\n" | |
286 " all_time = %lld\n" | |
287 ,cpu, global_busy_time, busy, | |
288 global_load_time, load, | |
289 global_store_time, store, | |
290 global_mail_time, mail, | |
291 mail_read_time, read, | |
292 mail_write_time, write, | |
293 mail_read_from_host_time, read_from_host, | |
294 mail_write_from_host_time, write_from_host, | |
295 all_time); | |
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; |
1809
138e7edff3ae
fix bound int size
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1718
diff
changeset
|
327 long *bound = list->bound; |
1213
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 */ |