Mercurial > hg > Members > kono > Cerium
diff TaskManager/kernel/ppe/MailManager.cc @ 649:55f898a58748
MailManager Fifo fix
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 22 Nov 2009 18:53:05 +0900 |
parents | 7c9ded1ea750 |
children | c13bbb7d70b3 |
line wrap: on
line diff
--- a/TaskManager/kernel/ppe/MailManager.cc Sat Nov 21 20:14:45 2009 +0900 +++ b/TaskManager/kernel/ppe/MailManager.cc Sun Nov 22 18:53:05 2009 +0900 @@ -29,20 +29,19 @@ MailManager::send(memaddr data) { queue[write++] = data; + write &= mask; if (write==read) { - - calc_mask(size*2); - - memaddr *newq = New(memaddr,size); - int i; - while(count()>0) { - newq[i++] = recv(); + memaddr *newq = New(memaddr,size*2); + int i = 0; + while(i<size) { + newq[i++] = queue[read++]; + read &= mask; } read = 0; write = i; + calc_mask(size*2); free(queue); queue = newq; } - write &= mask; } memaddr