Messages in this thread | | | Date | Thu, 8 Jan 2009 15:32:20 +0100 | From | Oleg Nesterov <> | Subject | Re: [RESEND][RFC PATCH v2] waitfd |
| |
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.
| |