Re: No NONBLOCK flag for dup3() or epoll_create1()?

Previous thread: [PATCH, RESEND] posix-timers: simplify de_thread()->exit_itimers() path by Oleg Nesterov on Wednesday, August 20, 2008 - 9:54 am. (2 messages)

Next thread: Rationale for paccept() sigset argument? by Michael Kerrisk on Wednesday, August 20, 2008 - 9:50 am. (6 messages)
From: Michael Kerrisk
Date: Wednesday, August 20, 2008 - 9:49 am

Ulrich

I've been doing some testing (2.6.27-rc3) of your new
file-descriptor-creating syscalls that accept flags.  According to

http://udrepper.livejournal.com/20407.html

all of the system calls should accept a *_NONBLOCK flag.  All of them do,
except for two:
dup3(olfd, newfd, flags)
and
epoll_create1(flags).

For epoll_create1() this certainly appears to be an oversight, since I can't
think of a reason not to support *_NONBLOCK.

For dup3() it is perhaps also an oversight.  However, it's not really clear
to me whether supporting O_NONBLOCK makes sense, since that would change the
file status flags of the open file description that is (also) referred to by
oldfd.  (Furthermore, given a open file description for which O_NONBLOCK is
already enabled, it is not possible to make a dup3() call that disables
O_NONBLOCK, which is an odd asymmetry in the API.)  What are your thoughts on
this?

Cheers,

Michael

--

From: Davide Libenzi
Date: Sunday, August 24, 2008 - 12:35 pm

Traditionally the no-wait epoll_wait() has been achieved with a zero 
timeout, but _NONBLOCK support can be easily added if seen as necessary.



- Davide


--

From: Michael Kerrisk
Date: Friday, August 29, 2008 - 1:44 pm

Ping!

On Wed, Aug 20, 2008 at 6:49 PM, Michael Kerrisk



-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
man-pages online: http://www.kernel.org/doc/man-pages/online_pages.html
Found a bug? http://www.kernel.org/doc/man-pages/reporting_bugs.html
--

From: Ulrich Drepper
Date: Monday, September 1, 2008 - 5:34 pm

On Wed, Aug 20, 2008 at 9:49 AM, Michael Kerrisk


I can.  There is already a method to not block (zero timeout).  We
should not provide multiple ways to get the same functionality.  It

That's why I didn't add support for the flag.  It's hardly useful to
add this support.
--

From: Michael Kerrisk
Date: Monday, September 1, 2008 - 10:06 pm

All of the below makes some sense, but is at odds with what you posted
on your blog entry, which documents *_NONBLOCK for both
epoll_create1() and dup3().  Thus, I needed to check with you since
the "intention" stated in the blog post differs from the actual

Though, one reason to do so would be consistency with the other
changed APIs.  (There are many cases where *ix API provides more than

Cheers,

Michael


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
man-pages online: http://www.kernel.org/doc/man-pages/online_pages.html
Found a bug? http://www.kernel.org/doc/man-pages/reporting_bugs.html
--

From: Michael Kerrisk
Date: Monday, September 1, 2008 - 10:07 pm

All of the below makes some sense, but is at odds with what you posted
on your blog entry, which documents *_NONBLOCK for both
epoll_create1() and dup3().  Thus, I needed to check with you since
the "intention" stated in the blog post differs from the actual

Though, one reason to do so would be consistency with the other
changed APIs.  (There are many cases where *ix API provides more than

Cheers,

Michael


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
man-pages online: http://www.kernel.org/doc/man-pages/online_pages.html
Found a bug? http://www.kernel.org/doc/man-pages/reporting_bugs.html
--

Previous thread: [PATCH, RESEND] posix-timers: simplify de_thread()->exit_itimers() path by Oleg Nesterov on Wednesday, August 20, 2008 - 9:54 am. (2 messages)

Next thread: Rationale for paccept() sigset argument? by Michael Kerrisk on Wednesday, August 20, 2008 - 9:50 am. (6 messages)