Mercurial > hg > Members > kono > Cerium
comparison TaskManager/Cell/spe/CellDmaManager.cc @ 1023:5245cf19775d
comment remove
author | yutaka@localhost.localdomain |
---|---|
date | Sun, 07 Nov 2010 22:18:41 +0900 |
parents | f8e9c985e2a8 |
children | 19a57960c436 |
comparison
equal
deleted
inserted
replaced
1022:43808a098020 | 1023:5245cf19775d |
---|---|
87 //ので多少は効果あるといいな。 | 87 //ので多少は効果あるといいな。 |
88 void CellDmaManager::mail_write_queue(memaddr data) | 88 void CellDmaManager::mail_write_queue(memaddr data) |
89 { | 89 { |
90 (this->*start_dmawait_profile)(); | 90 (this->*start_dmawait_profile)(); |
91 if (0 != spu_readchcnt(SPU_WrOutMbox)) { | 91 if (0 != spu_readchcnt(SPU_WrOutMbox)) { |
92 //if (mail_queue->empty()) { | |
93 if (mail_queue->count()) { | 92 if (mail_queue->count()) { |
94 spu_write_out_mbox((uint32)data); | 93 spu_write_out_mbox((uint32)data); |
95 } else { | 94 } else { |
96 /* | |
97 MailQueuePtr mail = mail_queue->poll(); | |
98 spu_write_out_mbox((uint32)mail->data); | |
99 mail_queue->free_(mail); | |
100 mail = mail_queue->create(); | |
101 mail->data = data; | |
102 mail_queue->addLast(mail); | |
103 */ | |
104 | 95 |
105 //mail_queue から poll する | 96 //mail_queue から poll する |
106 spu_write_out_mbox((uint32)mail_queue->recv()); | 97 spu_write_out_mbox((uint32)mail_queue->recv()); |
107 //mail_queue に加える | 98 //mail_queue に加える |
108 mail_queue->send(data); | 99 mail_queue->send(data); |
109 | 100 |
110 } | 101 } |
111 } else { | 102 } else { |
112 /* | |
113 MailQueuePtr mail = mail_queue->create(); | |
114 mail->data = data; | |
115 mail_queue->addLast(mail); | |
116 */ | |
117 | 103 |
118 mail_queue->send(data); | 104 mail_queue->send(data); |
119 | 105 |
120 } | 106 } |
121 (this->*end_dmawait_profile)(&global_mail_time); | 107 (this->*end_dmawait_profile)(&global_mail_time); |
125 void CellDmaManager::mail_write_finish_list(memaddr data) | 111 void CellDmaManager::mail_write_finish_list(memaddr data) |
126 { | 112 { |
127 | 113 |
128 (this->*start_dmawait_profile)(); | 114 (this->*start_dmawait_profile)(); |
129 | 115 |
130 //while (!mail_queue->empty()) { | |
131 while (mail_queue->count()) { | 116 while (mail_queue->count()) { |
132 /* | |
133 MailQueuePtr mail = mail_queue->poll(); | |
134 spu_write_out_mbox((uint32)mail->data); | |
135 mail_queue->free_(mail); | |
136 */ | |
137 | 117 |
138 spu_write_out_mbox((uint32)mail_queue->recv()); | 118 spu_write_out_mbox((uint32)mail_queue->recv()); |
139 | 119 |
140 } | 120 } |
141 | 121 |
142 spu_write_out_mbox((uint32)data); | 122 spu_write_out_mbox((uint32)data); |
143 //mail_queue.freePool(); | |
144 | 123 |
145 (this->*end_dmawait_profile)(&global_mail_time); | 124 (this->*end_dmawait_profile)(&global_mail_time); |
146 } | 125 } |
147 | 126 |
148 memaddr CellDmaManager::mail_read() | 127 memaddr CellDmaManager::mail_read() |