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