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
