On Wed, 2009-01-07 at 18:19 +0100, Oleg Nesterov wrote:From the perspective of waitfd, the only difference between WNOHANG and
Please note that unlike other sys_...fd() syscalls, sys_waitfd()Definitely agree here, waitfd() doesn't need WNOHANG - we already have
doesn't allow to pass O_CLOEXEC. Looks like we need a separate
"flags" argument...
Also, ioctl(FIONBIO) or fcntl(O_NONBLOCK) have no effect on
waitfd, not very good.
I'd suggest to remove WNOHANG from waitfd_ctx->ops and treat
(->f_flags & O_NONBLOCK) as WNOHANG.
(can't resist, ->ops is not the best name ;)
ONONBLOCK.
That also solves one of the strangest behaves of waitid when you use
WNOHANG (it returns zero and you have to check whether it changed the
struct), now you just read() - if no child you get EAGAIN, if a child
you read a struct.
Scott