Re: Add pselect, ppoll system calls.

From: Michael Kerrisk
Date: Fri Aug 26 2005 - 01:47:50 EST


David,

> On Fri, 2005-08-05 at 14:49 +0200, Michael Kerrisk wrote:
> > If I change your program to do something like the above, I also
> > do not see a message from the handler -- i.e., it is not being
> > called, and I'm pretty sure it should be.
>
> Hm, yes. What happens is we come back out of the select() immediately
> because of the pending signal, but on the way back to userspace we put the
> old signal mask back... so by the time we check for it, there _is_ no
> (unblocked) signal pending.
>
> If it's mandatory that we actually call the signal handler,

I'm just about to go off on holiday, and don't have a chance to pull up
all the relevant standards details at them moment. However, I'm fairly
sure that the signal handler should be called. (Try running a modified
version of my program on Solaris 10 or the Unix-03 conversion of AIX
(5.3?).)

> then we need to
> play tricks like sigsuspend() does to leave the old signal mask on the
> stack frame. That's a bit painful atm because do_signal is different
> between architectures.

Yes, I'd say the behaviour should in fact be like what sigsuspend() does.

Cheers,

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