[PATCH v3 2/4] Linux: Add close_range
Christian Brauner
christian.brauner@ubuntu.com
Tue Mar 9 10:02:59 GMT 2021
On Tue, Mar 09, 2021 at 10:47:59AM +0100, Florian Weimer via Libc-alpha wrote:
> * Adhemerval Zanella via Libc-alpha:
>
> > diff --git a/manual/llio.texi b/manual/llio.texi
> > index c0a53e1a6e..ceb18ac89a 100644
> > --- a/manual/llio.texi
> > +++ b/manual/llio.texi
> > @@ -284,6 +284,44 @@ of trying to close its underlying file descriptor with @code{close}.
> > This flushes any buffered output and updates the stream object to
> > indicate that it is closed.
> >
> > +@deftypefun int close_range (unsigned int @var{lowfd}, unsigned int @var{maxfd}, int @var{flags})
> > +@standards{Linux, unistd.h}
> > +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{@acsfd{}}}
> > +@c This is a syscall for Linux v5.9. There is no fallback emulation for
> > +@c older kernels.
> > +
> > +The function @code{clode_range} closes the file descriptor from @var{lowfd}
> > +to @var{maxfd} (inclusive). This function is similar to call @code{close} in
> > +specified file descriptor range depending on the @var{flags}.
> > +
> > +The @var{flags} add options on how the files are closes. Linux currently
> > +supports:.
>
> Spurios “.” at end of line.
>
> > +@vtable @code
> > +@item CLOSE_RANGE_UNSHARE
> > +Unshare the file descriptor table before closing file descriptors.
> > +@end vtable
> > +
> > +The normal return value from @code{close_range} is @math{0}; a value
> > +of @math{-1} is returned in case of failure. The following @code{errno} error
> > +conditions are defined for this function:
> > +
> > +@table @code
> > +@item EINVAL
> > +The @var{lowfd} value is larger than @var{maxfd} or an unsupported @var{flags}
> > +is used.
> > +
> > +@item ENOMEM
> > +Either there is not enough memory for the operation, or the process is
> > +out of address space.
> > +
> > +@item EMFILE
> > +The process has too many files open.
> > +The maximum number of file descriptors is controlled by the
> > +@end table
> > +@end deftypefun
>
> The ENOMEM and EMFILE descriptions are not really clear in this context.
> Are these failures only possible with CLOSE_RANGE_UNSHARE?
Hey, just to confirm: Yes, these errors can only occur with
CLOSE_RANGE_UNSHARE when the new file descriptor table is created.
Christian
More information about the Libc-alpha
mailing list