Re: SIGIO signals not generated in Redhat 6.2?

From: Richard B. Johnson (root@chaos.analogic.com)
Date: Thu Jul 13 2000 - 07:53:08 EST


On Wed, 12 Jul 2000, Uncle George wrote:

> there does not seem ( from my cursory look ) to be any code in fs/pipe.c
> that handles the dispatching of SIGIO's. Looking for SIGIO's on other
> device drivers leads me to believe that the SIGIO signal is not implimented
> for all drivers. Could also be that SIGIO is centrally dispatched - and
> havent found it yet.
> Any comments from the linux-kernel folks ?
> /gat
> anyway i'd still like to see that small sample that u say fails this.

This came up about a year ago. From what I remember, it was determined
that pipes are not supposed to generate signals when data are available
because you can't even write to a pipe unless you have a reader already
reading. Basically, the pipe will block on a write until somebody
reads it and a reader will block until somebody writes. Attempts to
set the pipes to non-blocking violates some spec (perhaps POSIX) so
the result is undefined.

This was what was explained to me when I reported what I thought was a
bug. You need to use UNIX Sockets for interprocess communication
instead of pipes if you want signals for synchronization. Sockets
produce the behavior you expect.

Cheers,
Dick Johnson

Penguin : Linux version 2.2.15 on an i686 machine (797.90 BogoMips).

"Memory is like gasoline. You use it up when you are running. Of
course you get it all back when you reboot..."; Actual explanation
obtained from the Micro$oft help desk.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Jul 15 2000 - 21:00:16 EST