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

Reply via email to