hurd: Implement close_range and closefrom

System Internals / glibc - Sergey Bugaev [] - 7 November 2021 15:16 UTC

The close_range () function implements the same API as the Linux and FreeBSD syscalls. It operates atomically and reliably. The specified upper bound is clamped to the actual size of the file descriptor table; it is expected that the most common use case is with last = UINT_MAX.

Like in the Linux syscall, it is also possible to pass the CLOSE_RANGE_CLOEXEC flag to mark the file descriptors in the range cloexec instead of acually closing them.

Also, add a Hurd version of the closefrom () function. Since unlike on Linux, close_range () cannot fail due to being unuspported by the running kernel, a fallback implementation is never necessary.

f2c996597d hurd: Implement close_range and closefrom
sysdeps/mach/hurd/Makefile | 2 +-
sysdeps/mach/hurd/Versions | 3 ++
sysdeps/mach/hurd/bits/unistd_ext.h | 34 +++++++++++++++++++
sysdeps/mach/hurd/close_range.c | 67 +++++++++++++++++++++++++++++++++++++
sysdeps/mach/hurd/closefrom.c | 29 ++++++++++++++++
sysdeps/mach/hurd/i386/libc.abilist | 1 +
6 files changed, 135 insertions(+), 1 deletion(-)


  • Share