Re: is Event the best event loop module?
[email protected] (Raul Dias)
| Newsgroups | perl.loop |
|---|---|
| Message-ID | <[email protected]> |
[...] >> the way to handle that properly is to check for any pending signals >> before you enter the select call (while blocking any from coming in) and >> then checking after the select returns. this can only be done correctly >> in C. > >There's no way in perl or C that I know of to atomically set a signal >mask and enter a select call. I've seen rumors of a pselect library >call available on some systems that can do this. A sigprocmask call >followed by a select call has a race condition, because a signal can >come in between the two statements. How do you solve this in C? I've >seen a klugey solution that requires a setjmp/longjmp. A long time ago in a galaxy far away I got the same problem with the Linux kernel 2.0.x. I was writting a driver for A/D board I have build and I had to make the driver sleep before the interrupt happened after I set it up for making a read. Unfortunally that was too fast and the interrupt happened almost always before get to sleep. The only way I found to do it is to edit the queue and set the driver as "sleeping" before it really was sleeping. So after puting it to sleep I would get the call to process the interrupt imediatly. Regards, Raul Dias