check five times the receive buffers because a remote interrupt could pass the mail

This commit is contained in:
Stefan Lankes 2011-11-29 03:22:01 -08:00
parent ef750e1c31
commit 54b1c3e6ac

View file

@ -207,25 +207,28 @@ int iRCCE_mail_check(int sender) {
return iRCCE_MAILBOX_CLOSED; return iRCCE_MAILBOX_CLOSED;
} }
RC_cache_invalidate(); for(i=0; i<5; i++) {
if( iRCCE_mailbox_recv[sender]->sent ) {
/* disable interrupts */
flags = irq_nested_disable();
iRCCE_mail_fetch(sender);
// reset senders flag
RC_cache_invalidate(); RC_cache_invalidate();
*(iRCCE_mailbox_recv[sender]) = dummy_header; if( iRCCE_mailbox_recv[sender]->sent ) {
/* disable interrupts */
flags = irq_nested_disable();
/* enable interrupts */ iRCCE_mail_fetch(sender);
irq_nested_enable(flags);
return iRCCE_SUCCESS; // reset senders flag
} else { RC_cache_invalidate();
return iRCCE_MAILBOX_EMPTY; *(iRCCE_mailbox_recv[sender]) = dummy_header;
/* enable interrupts */
irq_nested_enable(flags);
return iRCCE_SUCCESS;
}
NOP8;
} }
return iRCCE_MAILBOX_EMPTY;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------