< Previous by Date | Date Index | Next by Date > |
Thread Index | Next in Thread > |
“A
while back, I noticed a slight problem in the way the stack's process loop is
constructed. The issue is that we can get in a situation where we are blocking
on a select call (in the transport code) when there is work to be done in the transaction
layer. Basically, let's say we get down into the select call; we're waiting for
an fd to become ready. Then, the TU sends a request down to the stack. This
does not interrupt the select call; we sit there waiting for an fd to become
ready for 25ms, time out, and then notice the new work that the TU kicked down
to us. We could solve this by using the "self-pipe" trick; where we
have an anonymous pipe that we write a single byte to whenever stuff gets put
in the state machine fifo, and we select on this pipe's fd along with the
transport fds.
Thanks, Vasanthi |