Sorry, I'm lost...where is a "current buffer" and how is it {un}locked?
MS

[email protected] wrote:
> Hi There
> 
> In my stressing test, I also found another problem, which is the event
> ReceiveBytePacket.endPacket(error_t result) in SerialDispatcherP.nc component
> 
>    async event void ReceiveBytePacket.endPacket(error_t result) {
>      uint8_t postsignalreceive = FALSE;
>      atomic {
>        if (!receiveTaskPending && result == SUCCESS) {
>           /***** I evict the concrete code here  *****/
>        }
>      }
>      if (postsignalreceive){
>        post receiveTask();
>      }
>    }
> 
> Generally, this event is signaled once the transmission of byte stream  
> on the receive
> path is finished. If the condition flags within the atomic section are  
> fulfilled, then
> everything is fine...
> 
> However, if these flags can't be met, based on current design, there  
> is no further
> handling. Note that the current buffer is still locked, and there is  
> no buffer swapping
> either. In other words, if new byte stream comes in, then it will  
> still try to enter this
> locked buffer, resulting in the deadlock.
> 
> Is my analysis correct? Thanks a lot for your clarification!
> 
> Regards
> 
> Peng
> 
> ----------------------------------------------------------------
> This message was sent using IMP, the Internet Messaging Program.
> 
> _______________________________________________
> Tinyos-help mailing list
> [email protected]
> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to