Thomas Sailer wrote:
> 
> johan verrept wrote:
> 
> >         If you have reasons not to do this, please let me know.
> 
> Do you know what the AIO code does? I would prefer to do the same
> as the AIO code, because that will be the least surprise solution...

The parts of the code I have found that sends siginfo SIGIO, in fs/fcntl.c 
(__kill_fasync()) and
fs/dnotify.c (__inode_dir_notify()) retrieve the f_own struct from the file * (which 
is set by
F_SETOWN).
The manpage of fcntl, especially the description of F_SETOWN and F_SETSIG, seems to 
point to what I
suggest. Following manpages seems to be the way of the least surprise?

man pages fcntl(2) qouted below.

        J.


 F_SETOWN
     Set  the  process  ID  or  process  group that will
     receive SIGIO and SIGURG signals for events on file
     descriptor  fd.  Process groups are specified using
     negative values.  (F_SETSIG can be used to  specify
     a different signal instead of SIGIO).

     If  you  set  the  O_ASYNC  status  flag  on a file
     descriptor (either by providing this flag with  the
     open(2)  call,  or  by using the F_SETFL command of
     fcntl), a SIGIO signal is sent  whenever  input  or
     output becomes possible on that file descriptor.

     The  process or process group to receive the signal
     can be selected by using the  F_SETOWN  command  to
     the  fcntl  function.   If the file descriptor is a
     socket, this also selects the recipient  of  SIGURG
     signals  that  are  delivered when out-of-band data
     arrives on that socket.  (SIGURG  is  sent  in  any
     situation  where  select(2) would report the socket
     as having an "exceptional condition".)  If the file
     descriptor  corresponds  to a terminal device, then
     SIGIO signals are sent to  the  foreground  process
     group of the terminal.

F_SETSIG
     Sets the signal sent when input or  output  becomes
     possible.   A  value  of  zero  means  to  send the
     default SIGIO signal.  Any other  value  (including
     SIGIO)  is  the signal to send instead, and in this
     case additional info is  available  to  the  signal
     handler if installed with SA_SIGINFO.

     By  using  F_SETSIG with a non-zero value, and set­
     ting SA_SIGINFO for the signal handler (see  sigac­
     tion(2)),  extra  information  about  I/O events is
     passed to the handler in a siginfo_t structure.  If
     the si_code field indicates the source is SI_SIGIO,
     the si_fd field gives the file  descriptor  associ­
     ated  with the event.  Otherwise, there is no indi­
     cation which file descriptors are pending, and  you
     should   use   the   usual  mechanisms  (select(2),
     poll(2),  read(2)  with  O_NONBLOCK  set  etc.)  to
     determine  which file descriptors are available for
     I/O.

     By selecting a POSIX.1b real time signal (value  >=
     SIGRTMIN),  multiple I/O events may be queued using
     the same signal numbers.  (Queuing is dependent  on
     available  memory).  Extra information is available
     if SA_SIGINFO is set for  the  signal  handler,  as
     above.

_______________________________________________________________

Don't miss the 2002 Sprint PCS Application Developer's Conference
August 25-28 in Las Vegas -- http://devcon.sprintpcs.com/adp/index.cfm

_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to