Messages in this thread Patch in this message | | | Date | Wed, 23 Mar 2005 23:35:59 -0500 | From | Bharath Ramesh <> | Subject | Possible bug: ASYNC IO with RT Signals in threaded application doesnt work |
| |
I have a multithread application which uses ASYNC IO but is RT signal driven. I have a worker thread which handles all connection and accepts all data that are received. I use SIGRTMIN as the signal to be delivered whenever my socket is ready with data. All my threads block SIGRTMIN including the main thread. In the worker thread I have something like this
while (1) { sigwaitinfo (); ... ... ... }
I am never able dequeue SIGRTMIN from the pending signal queue from the worker thread. If I do the above in the main thread then I am able dequeue SIGRTMIN from the pending signal queue.
Is this a bug in the kernel or is it a feature. I am also attaching a patch along with this email which solves the ASYNC IO problem with RT signals.
Thanks,
Bharath
--- Bharath Ramesh <bramesh@vt.edu> http://csgrad.cs.vt.edu/~bramesh
--- linux-2.6.10/fs/fcntl.c.orig 2004-12-24 16:35:01.000000000 -0500 +++ linux-2.6.10/fs/fcntl.c 2005-03-22 14:30:14.298415152 -0500 @@ -469,7 +469,7 @@ static void send_sigio_to_task(struct ta else si.si_band = band_table[reason - POLL_IN]; si.si_fd = fd; - if (!send_sig_info(fown->signum, &si, p)) + if (!send_group_sig_info(fown->signum, &si, p)) break; /* fall-through: fall back on the old plain SIGIO signal */ case 0: | |