Re: [RESEND][RFC PATCH v2] waitfd

Oleg Nesterov
2009-01-08T14:34:39Z

On 01/07, Ulrich Drepper wrote:
>
> On Wed, Jan 7, 2009 at 12:53 PM, Roland McGrath <roland@redhat.com> wrote:
> > Do we really need another one for this? How about using signalfd plus
> > setting the child's exit_signal to a queuing (SIGRTMIN+n) signal instead of
> > SIGCHLD? It's slightly more magical for the userland process to know to do
> > that (fork -> clone SIGRTMIN). But compared to adding a syscall we don't
> > really have to add, maybe better.
>
> Since waitfd shouldn't consume the child termination notification
> waitfd should be more widely usable than the wait*() interfaces.

yes, it doesn't eat the notification (SIGCHLD), but it reaps a
zombie, clears ->exit_code TASK_STOPPED/TASK_TRACED tasks, clears
SIGNAL_STOP_CONTINUED.

> I.e., it's not necessary to restrict the use to parents. Any process
> with the same UID should be allowed to call waitfd. This would allow
> some new user cases.

I don't see how it is possible to implement this...

The parent can sleep on ->wait_chldexit and it will be notified, but
how can we wait for the unrelated process with the same UID ?

Even if sys_waitfd() uses P_PID, we can't use task->parent->signal->wait_chldexit,
task->parent can exit before task exits.

Or I misunderstood you?

Oleg.