On Mon, Aug 10, 2009 at 7:03 PM, Oleg Nesterov<o...@redhat.com> wrote: > On 08/10, stephane eranian wrote: >> >> You must use F_SETSIG on SIGIO if you want your signal handler to >> receive the file descriptor in siginfo. This is useful if you want to perform >> some actions on the descriptor. That is the case in perfmon and this is >> the case in certain situations with perfcounters as well. >> >> Setting SA_SIGINFO provides siginfo, but the si_fd field is NOT set >> correctly without F_SETSIG. I have verified this with perfcounters, and >> this is indeed the case. >> >> This behavior seems kind of odd to me. > > Agreed, this looks a bit odd. But at least this is documented. From > man 2 fcntl: > > By using F_SETSIG with a nonzero value, and setting 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 associated with the event. Otherwise, there is no > indication > which file descriptors are pending, > > Not sure if it is safe to change the historical behaviour. > Don't need to change it. But for SIGIO, if you see SA_SIGINFO, then pass the si_fd. From Jamie, it seems F_SETSIG was not added just for this file descriptor trick. The initial goal seems orthogonal to the file descriptor passing in si_fd.
> (the manpage is not exactly right though, and the comment in > send_sigio_to_task() > is not right too: SI_SIGIO (and, btw, SI_QUEUE/SI_DETHREAD) is never used). > > Oleg. > > ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ perfmon2-devel mailing list perfmon2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/perfmon2-devel