check five times the receive buffers because a remote interrupt could pass the mail
This commit is contained in:
parent
ef750e1c31
commit
54b1c3e6ac
1 changed files with 18 additions and 15 deletions
|
@ -207,25 +207,28 @@ int iRCCE_mail_check(int sender) {
|
|||
return iRCCE_MAILBOX_CLOSED;
|
||||
}
|
||||
|
||||
RC_cache_invalidate();
|
||||
if( iRCCE_mailbox_recv[sender]->sent ) {
|
||||
/* disable interrupts */
|
||||
flags = irq_nested_disable();
|
||||
|
||||
iRCCE_mail_fetch(sender);
|
||||
|
||||
// reset senders flag
|
||||
for(i=0; i<5; i++) {
|
||||
RC_cache_invalidate();
|
||||
*(iRCCE_mailbox_recv[sender]) = dummy_header;
|
||||
|
||||
/* enable interrupts */
|
||||
irq_nested_enable(flags);
|
||||
if( iRCCE_mailbox_recv[sender]->sent ) {
|
||||
/* disable interrupts */
|
||||
flags = irq_nested_disable();
|
||||
|
||||
return iRCCE_SUCCESS;
|
||||
} else {
|
||||
return iRCCE_MAILBOX_EMPTY;
|
||||
iRCCE_mail_fetch(sender);
|
||||
|
||||
// reset senders flag
|
||||
RC_cache_invalidate();
|
||||
*(iRCCE_mailbox_recv[sender]) = dummy_header;
|
||||
|
||||
/* enable interrupts */
|
||||
irq_nested_enable(flags);
|
||||
|
||||
return iRCCE_SUCCESS;
|
||||
}
|
||||
|
||||
NOP8;
|
||||
}
|
||||
|
||||
return iRCCE_MAILBOX_EMPTY;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
|
Loading…
Add table
Reference in a new issue