|
Message-ID: <20220818003531.GG7074@brightrain.aerifal.cx> Date: Wed, 17 Aug 2022 20:35:32 -0400 From: Rich Felker <dalias@...c.org> To: Guilherme Janczak <guilherme.janczak@...dex.com> Cc: musl@...ts.openwall.com Subject: Re: [PATCH] add close_range() syscall wrapper On Wed, Aug 10, 2022 at 01:03:11PM +0000, Guilherme Janczak wrote: > close_range() is a syscall present in FreeBSD 8.0 and Linux 5.9. glibc > 2.34 added a wrapper. > --- The existence of this operation has been controversial, and it's arguable that it should be excluded by policy not to support UB (it's UB to close fds you don't own that might be used internally by the implementation) though I'm not sure it really helps since folks who want to use it will just make the syscall directly. We should probably at least consider it for inclusion. > include/unistd.h | 3 +++ > src/linux/close_range.c | 8 ++++++++ > 2 files changed, 11 insertions(+) > create mode 100644 src/linux/close_range.c > > diff --git a/include/unistd.h b/include/unistd.h > index 80be3b26..e4b8cbb1 100644 > --- a/include/unistd.h > +++ b/include/unistd.h > @@ -161,6 +161,9 @@ unsigned ualarm(unsigned, unsigned); > #define L_INCR 1 > #define L_XTND 2 > int brk(void *); > +#define CLOSE_RANGE_UNSHARE 0x01 > +#define CLOSE_RANGE_CLOEXEC 0x02 > +int close_range(unsigned int, unsigned int, int); > void *sbrk(intptr_t); > pid_t vfork(void); > int vhangup(void); > diff --git a/src/linux/close_range.c b/src/linux/close_range.c > new file mode 100644 > index 00000000..4c5cd68c > --- /dev/null > +++ b/src/linux/close_range.c > @@ -0,0 +1,8 @@ > +#define _GNU_SOURCE This should probably be _BSD_SOURCE if it's exposed under _BSD_SOURCE. > +#include <unistd.h> > +#include "syscall.h" > + > +int close_range(unsigned int first, unsigned int last, int flags) > +{ > + return syscall(SYS_close_range, first, last, (unsigned int)flags); > +} > -- > 2.35.1 Can you elaborate on what the cast to unsigned is for? Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.