lkml.org 
[lkml]   [2020]   [Sep]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v2 1/4] pidfd: support PIDFD_NONBLOCK in pidfd_open()
    On Wed, Sep 02, 2020 at 12:21:27PM +0200, Christian Brauner wrote:
    > Introduce PIDFD_NONBLOCK to support non-blocking pidfd file descriptors.
    >
    > Ever since the introduction of pidfds and more advanced async io various
    > programming languages such as Rust have grown support for async event
    > libraries. These libraries are created to help build epoll-based event loops
    > around file descriptors. A common pattern is to automatically make all file
    > descriptors they manage to O_NONBLOCK.
    >
    > For such libraries the EAGAIN error code is treated specially. When a function
    > is called that returns EAGAIN the function isn't called again until the event
    > loop indicates the the file descriptor is ready. Supporting EAGAIN when
    > waiting on pidfds makes such libraries just work with little effort. In the
    > following patch we will extend waitid() internally to support non-blocking
    > pidfds.
    >
    > This introduces a new flag PIDFD_NONBLOCK that is equivalent to O_NONBLOCK.
    > This follows the same patterns we have for other (anon inode) file descriptors
    > such as EFD_NONBLOCK, IN_NONBLOCK, SFD_NONBLOCK, TFD_NONBLOCK and the same for
    > close-on-exec flags.
    >
    > Link: https://lore.kernel.org/lkml/20200811181236.GA18763@localhost/
    > Link: https://github.com/joshtriplett/async-pidfd
    > Cc: Kees Cook <keescook@chromium.org>
    > Cc: Sargun Dhillon <sargun@sargun.me>
    > Cc: Oleg Nesterov <oleg@redhat.com>
    > Suggested-by: Josh Triplett <josh@joshtriplett.org>
    > Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>

    Reviewed-by: Josh Triplett <josh@joshtriplett.org>

    \
     
     \ /
      Last update: 2020-09-04 01:51    [W:4.127 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site