Mercurial > hg > Game > Cerium
annotate TaskManager/Fifo/FifoDmaManager.h @ 1483:f402f6444237 draft
create gpuTaskinit
author | Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 06 Aug 2012 19:55:47 +0900 |
parents | 70f461442b0f |
children | 7673e2ad2623 |
rev | line source |
---|---|
3 | 1 #ifndef INCLUDED_FIFO_DMA_MANAGER |
2 #define INCLUDED_FIFO_DMA_MANAGER | |
3 | |
307 | 4 #include "base.h" |
5 #include "DmaManager.h" | |
1309 | 6 |
1190
cfbf4f264829
fix FifoDmaManager.h
Daichi TOMA <amothic@cr.ie.u-ryukyu.ac.jp>
parents:
1189
diff
changeset
|
7 #ifdef __CERIUM_PARALLEL__ |
1196
27e35b4098a4
Rename MailManager
Daichi TOMA <e085740@ie.u-ryukyu.ac.jp>
parents:
1190
diff
changeset
|
8 #include "SynchronizedMailManager.h" |
1190
cfbf4f264829
fix FifoDmaManager.h
Daichi TOMA <amothic@cr.ie.u-ryukyu.ac.jp>
parents:
1189
diff
changeset
|
9 #else |
307 | 10 #include "MailManager.h" |
1190
cfbf4f264829
fix FifoDmaManager.h
Daichi TOMA <amothic@cr.ie.u-ryukyu.ac.jp>
parents:
1189
diff
changeset
|
11 #endif |
3 | 12 |
13 class FifoDmaManager : public DmaManager { | |
647
7ba4ad4538b1
MailManager rewrite. not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
14 |
7ba4ad4538b1
MailManager rewrite. not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
15 protected: |
7ba4ad4538b1
MailManager rewrite. not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
16 /* variables */ |
7ba4ad4538b1
MailManager rewrite. not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
17 MailManagerPtr mail_queue1; |
7ba4ad4538b1
MailManager rewrite. not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
18 MailManagerPtr mail_queue2; |
7ba4ad4538b1
MailManager rewrite. not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
19 |
3 | 20 public: |
109 | 21 BASE_NEW_DELETE(FifoDmaManager); |
22 | |
647
7ba4ad4538b1
MailManager rewrite. not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
23 FifoDmaManager() { |
1189 | 24 #ifdef __CERIUM_PARALLEL__ |
1417 | 25 mail_queue1 = new SynchronizedMailManager(); |
26 mail_queue2 = new SynchronizedMailManager(); | |
1189 | 27 #else |
1417 | 28 mail_queue1 = new MailManager(); |
29 mail_queue2 = new MailManager(); | |
1189 | 30 #endif |
1417 | 31 start_dmawait_profile = &FifoDmaManager::null_start_dmawait_profile; |
32 end_dmawait_profile = &FifoDmaManager::null_end_dmawait_profile; | |
647
7ba4ad4538b1
MailManager rewrite. not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
33 } |
7ba4ad4538b1
MailManager rewrite. not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
34 |
7ba4ad4538b1
MailManager rewrite. not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
35 ~FifoDmaManager() { |
7ba4ad4538b1
MailManager rewrite. not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
36 delete mail_queue1; |
7ba4ad4538b1
MailManager rewrite. not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
37 delete mail_queue2; |
7ba4ad4538b1
MailManager rewrite. not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
38 } |
3 | 39 |
1309 | 40 /* variables */ |
41 protected: | |
1417 | 42 unsigned long long start_time, stop_time; |
43 unsigned long long global_busy_time, global_load_time, global_store_time, global_mail_time; | |
44 unsigned long long dma_load_time, dma_store_time, dma_loadList_time, dma_storeList_time; | |
45 unsigned long long mail_read_time, mail_write_time; | |
46 unsigned long long mail_read_from_host_time, mail_write_from_host_time; | |
1309 | 47 |
3 | 48 /* functions */ |
1309 | 49 public: |
1417 | 50 virtual void *dma_load(Scheduler *s, memaddr addr, uint32 size, uint32 mask); |
51 virtual void *dma_load1(void *buf, memaddr addr, uint32 size, uint32 mask); | |
52 virtual void *dma_store(void *buf, memaddr addr, uint32 size, uint32 mask); | |
53 virtual void dma_wait(uint32 mask) ; | |
54 virtual void *get_writebuf(Scheduler *s, memaddr addr, uint32 size) ; | |
1309 | 55 void (FifoDmaManager::*start_dmawait_profile)(); |
56 void (FifoDmaManager::*end_dmawait_profile)(unsigned long long *counter); | |
1417 | 57 void start_profile(); |
58 void stop_profile(); | |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1196
diff
changeset
|
59 |
1309 | 60 void show_dma_wait(Scheduler *s, int cpu); |
3 | 61 |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1364
diff
changeset
|
62 void mail_write(memaddr data); |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1364
diff
changeset
|
63 void mail_write_finish_list(memaddr data); |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1364
diff
changeset
|
64 memaddr mail_read(); |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1364
diff
changeset
|
65 memaddr task_list_mail_read(); |
647
7ba4ad4538b1
MailManager rewrite. not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
66 |
1371
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1364
diff
changeset
|
67 void mail_write_from_host(memaddr data); |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1364
diff
changeset
|
68 memaddr mail_read_from_host(); |
66ae94572433
add mail_time in profiler
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1364
diff
changeset
|
69 int has_mail_from_host(); |
109 | 70 |
1417 | 71 virtual void *dma_loadList(Scheduler *s, ListDataPtr list, uint32 mask); |
72 virtual void dma_storeList(ListDataPtr, void *buff, uint32 mask); | |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1196
diff
changeset
|
73 |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1196
diff
changeset
|
74 uint32 get_tag(); |
1417 | 75 virtual void bound(ListData *); |
647
7ba4ad4538b1
MailManager rewrite. not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
76 |
1309 | 77 private: |
1417 | 78 void do_start_dmawait_profile(); |
79 void do_end_dmawait_profile(unsigned long long *counter); | |
80 void null_start_dmawait_profile(); | |
81 void null_end_dmawait_profile(unsigned long long *counter); | |
1309 | 82 |
3 | 83 }; |
84 | |
85 #endif |