diff --git a/src/basic/missing_syscall.h b/src/basic/missing_syscall.h index b633ea4541f..21f470d96b2 100644 --- a/src/basic/missing_syscall.h +++ b/src/basic/missing_syscall.h @@ -33,39 +33,47 @@ static inline int missing_pivot_root(const char *new_root, const char *put_old) /* ======================================================================= */ -#if !HAVE_MEMFD_CREATE -/* may be (invalid) negative number due to libseccomp, see PR 13319 */ -# if ! (defined __NR_memfd_create && __NR_memfd_create >= 0) -# if defined __NR_memfd_create -# undef __NR_memfd_create -# endif -# if defined __x86_64__ -# define __NR_memfd_create 319 -# elif defined __arm__ -# define __NR_memfd_create 385 -# elif defined __aarch64__ -# define __NR_memfd_create 279 -# elif defined __s390__ -# define __NR_memfd_create 350 -# elif defined _MIPS_SIM -# if _MIPS_SIM == _MIPS_SIM_ABI32 -# define __NR_memfd_create 4354 -# endif -# if _MIPS_SIM == _MIPS_SIM_NABI32 -# define __NR_memfd_create 6318 -# endif -# if _MIPS_SIM == _MIPS_SIM_ABI64 -# define __NR_memfd_create 5314 -# endif -# elif defined __i386__ -# define __NR_memfd_create 356 -# elif defined __arc__ -# define __NR_memfd_create 279 -# else -# warning "__NR_memfd_create unknown for your architecture" -# endif +#if defined __x86_64__ +# define systemd_NR_memfd_create 319 +#elif defined __arm__ +# define systemd_NR_memfd_create 385 +#elif defined __aarch64__ +# define systemd_NR_memfd_create 279 +#elif defined __s390__ +# define systemd_NR_memfd_create 350 +#elif defined _MIPS_SIM +# if _MIPS_SIM == _MIPS_SIM_ABI32 +# define systemd_NR_memfd_create 4354 # endif +# if _MIPS_SIM == _MIPS_SIM_NABI32 +# define systemd_NR_memfd_create 6318 +# endif +# if _MIPS_SIM == _MIPS_SIM_ABI64 +# define systemd_NR_memfd_create 5314 +# endif +#elif defined __i386__ +# define systemd_NR_memfd_create 356 +#elif defined __arc__ +# define systemd_NR_memfd_create 279 +#else +# warning "memfd_create() syscall number unknown for your architecture" +#endif +/* may be (invalid) negative number due to libseccomp, see PR 13319 */ +#if defined __NR_memfd_create && __NR_memfd_create >= 0 +# if defined systemd_NR_memfd_create +assert_cc(__NR_memfd_create == systemd_NR_memfd_create); +# endif +#else +# if defined __NR_memfd_create +# undef __NR_memfd_create +# endif +# if defined systemd_NR_memfd_create +# define __NR_memfd_create systemd_NR_memfd_create +# endif +#endif + +#if !HAVE_MEMFD_CREATE static inline int missing_memfd_create(const char *name, unsigned int flags) { # ifdef __NR_memfd_create return syscall(__NR_memfd_create, name, flags); @@ -80,45 +88,53 @@ static inline int missing_memfd_create(const char *name, unsigned int flags) { /* ======================================================================= */ -#if !HAVE_GETRANDOM -/* may be (invalid) negative number due to libseccomp, see PR 13319 */ -# if ! (defined __NR_getrandom && __NR_getrandom >= 0) -# if defined __NR_getrandom -# undef __NR_getrandom -# endif -# if defined __x86_64__ -# define __NR_getrandom 318 -# elif defined(__i386__) -# define __NR_getrandom 355 -# elif defined(__arm__) -# define __NR_getrandom 384 -# elif defined(__aarch64__) -# define __NR_getrandom 278 -# elif defined(__ia64__) -# define __NR_getrandom 1339 -# elif defined(__m68k__) -# define __NR_getrandom 352 -# elif defined(__s390x__) -# define __NR_getrandom 349 -# elif defined(__powerpc__) -# define __NR_getrandom 359 -# elif defined _MIPS_SIM -# if _MIPS_SIM == _MIPS_SIM_ABI32 -# define __NR_getrandom 4353 -# endif -# if _MIPS_SIM == _MIPS_SIM_NABI32 -# define __NR_getrandom 6317 -# endif -# if _MIPS_SIM == _MIPS_SIM_ABI64 -# define __NR_getrandom 5313 -# endif -# elif defined(__arc__) -# define __NR_getrandom 278 -# else -# warning "__NR_getrandom unknown for your architecture" -# endif +#if defined __x86_64__ +# define systemd_NR_getrandom 318 +#elif defined(__i386__) +# define systemd_NR_getrandom 355 +#elif defined(__arm__) +# define systemd_NR_getrandom 384 +#elif defined(__aarch64__) +# define systemd_NR_getrandom 278 +#elif defined(__ia64__) +# define systemd_NR_getrandom 1339 +#elif defined(__m68k__) +# define systemd_NR_getrandom 352 +#elif defined(__s390x__) +# define systemd_NR_getrandom 349 +#elif defined(__powerpc__) +# define systemd_NR_getrandom 359 +#elif defined _MIPS_SIM +# if _MIPS_SIM == _MIPS_SIM_ABI32 +# define systemd_NR_getrandom 4353 # endif +# if _MIPS_SIM == _MIPS_SIM_NABI32 +# define systemd_NR_getrandom 6317 +# endif +# if _MIPS_SIM == _MIPS_SIM_ABI64 +# define systemd_NR_getrandom 5313 +# endif +#elif defined(__arc__) +# define systemd_NR_getrandom 278 +#else +# warning "getrandom() syscall number unknown for your architecture" +#endif +/* may be (invalid) negative number due to libseccomp, see PR 13319 */ +#if defined __NR_getrandom && __NR_getrandom >= 0 +# if defined systemd_NR_getrandom +assert_cc(__NR_getrandom == systemd_NR_getrandom); +# endif +#else +# if defined __NR_getrandom +# undef __NR_getrandom +# endif +# if defined systemd_NR_getrandom +# define __NR_getrandom systemd_NR_getrandom +# endif +#endif + +#if !HAVE_GETRANDOM static inline int missing_getrandom(void *buffer, size_t count, unsigned flags) { # ifdef __NR_getrandom return syscall(__NR_getrandom, buffer, count, flags); @@ -133,9 +149,14 @@ static inline int missing_getrandom(void *buffer, size_t count, unsigned flags) /* ======================================================================= */ +/* The syscall has been defined since forever, but the glibc wrapper was missing. */ #if !HAVE_GETTID static inline pid_t missing_gettid(void) { +# if defined __NR_gettid && __NR_gettid >= 0 return (pid_t) syscall(__NR_gettid); +# else +# error "__NR_gettid not defined" +# endif } # define gettid missing_gettid @@ -143,27 +164,35 @@ static inline pid_t missing_gettid(void) { /* ======================================================================= */ -#if !HAVE_NAME_TO_HANDLE_AT -/* may be (invalid) negative number due to libseccomp, see PR 13319 */ -# if ! (defined __NR_name_to_handle_at && __NR_name_to_handle_at >= 0) -# if defined __NR_name_to_handle_at -# undef __NR_name_to_handle_at -# endif -# if defined(__x86_64__) -# define __NR_name_to_handle_at 303 -# elif defined(__i386__) -# define __NR_name_to_handle_at 341 -# elif defined(__arm__) -# define __NR_name_to_handle_at 370 -# elif defined(__powerpc__) -# define __NR_name_to_handle_at 345 -# elif defined(__arc__) -# define __NR_name_to_handle_at 264 -# else -# error "__NR_name_to_handle_at is not defined" -# endif -# endif +#if defined(__x86_64__) +# define systemd_NR_name_to_handle_at 303 +#elif defined(__i386__) +# define systemd_NR_name_to_handle_at 341 +#elif defined(__arm__) +# define systemd_NR_name_to_handle_at 370 +#elif defined(__powerpc__) +# define systemd_NR_name_to_handle_at 345 +#elif defined(__arc__) +# define systemd_NR_name_to_handle_at 264 +#else +# warning "name_to_handle_at number is not defined" +#endif +/* may be (invalid) negative number due to libseccomp, see PR 13319 */ +#if defined __NR_name_to_handle_at && __NR_name_to_handle_at >= 0 +# if defined systemd_NR_name_to_handle_at +assert_cc(__NR_name_to_handle_at == systemd_NR_name_to_handle_at); +# endif +#else +# if defined __NR_name_to_handle_at +# undef __NR_name_to_handle_at +# endif +# if defined systemd_NR_name_to_handle_at +# define __NR_name_to_handle_at systemd_NR_name_to_handle_at +# endif +#endif + +#if !HAVE_NAME_TO_HANDLE_AT struct file_handle { unsigned int handle_bytes; int handle_type; @@ -184,23 +213,31 @@ static inline int missing_name_to_handle_at(int fd, const char *name, struct fil /* ======================================================================= */ -#if !HAVE_SETNS -/* may be (invalid) negative number due to libseccomp, see PR 13319 */ -# if ! (defined __NR_setns && __NR_setns >= 0) -# if defined __NR_setns -# undef __NR_setns -# endif -# if defined(__x86_64__) -# define __NR_setns 308 -# elif defined(__i386__) -# define __NR_setns 346 -# elif defined(__arc__) -# define __NR_setns 268 -# else -# error "__NR_setns is not defined" -# endif -# endif +#if defined(__x86_64__) +# define systemd_NR_setns 308 +#elif defined(__i386__) +# define systemd_NR_setns 346 +#elif defined(__arc__) +# define systemd_NR_setns 268 +#else +# warning "setns() syscall number unknown for your architecture" +#endif +/* may be (invalid) negative number due to libseccomp, see PR 13319 */ +#if defined __NR_setns && __NR_setns >= 0 +# if defined systemd_NR_setns +assert_cc(__NR_setns == systemd_NR_setns); +# endif +#else +# if defined __NR_setns +# undef __NR_setns +# endif +# if defined systemd_NR_setns +# define __NR_setns systemd_NR_setns +# endif +#endif + +#if !HAVE_SETNS static inline int missing_setns(int fd, int nstype) { # ifdef __NR_setns return syscall(__NR_setns, fd, nstype); @@ -225,41 +262,49 @@ static inline pid_t raw_getpid(void) { /* ======================================================================= */ -#if !HAVE_RENAMEAT2 -/* may be (invalid) negative number due to libseccomp, see PR 13319 */ -# if ! (defined __NR_renameat2 && __NR_renameat2 >= 0) -# if defined __NR_renameat2 -# undef __NR_renameat2 -# endif -# if defined __x86_64__ -# define __NR_renameat2 316 -# elif defined __arm__ -# define __NR_renameat2 382 -# elif defined __aarch64__ -# define __NR_renameat2 276 -# elif defined _MIPS_SIM -# if _MIPS_SIM == _MIPS_SIM_ABI32 -# define __NR_renameat2 4351 -# endif -# if _MIPS_SIM == _MIPS_SIM_NABI32 -# define __NR_renameat2 6315 -# endif -# if _MIPS_SIM == _MIPS_SIM_ABI64 -# define __NR_renameat2 5311 -# endif -# elif defined __i386__ -# define __NR_renameat2 353 -# elif defined __powerpc64__ -# define __NR_renameat2 357 -# elif defined __s390__ || defined __s390x__ -# define __NR_renameat2 347 -# elif defined __arc__ -# define __NR_renameat2 276 -# else -# warning "__NR_renameat2 unknown for your architecture" -# endif +#if defined __x86_64__ +# define systemd_NR_renameat2 316 +#elif defined __arm__ +# define systemd_NR_renameat2 382 +#elif defined __aarch64__ +# define systemd_NR_renameat2 276 +#elif defined _MIPS_SIM +# if _MIPS_SIM == _MIPS_SIM_ABI32 +# define systemd_NR_renameat2 4351 # endif +# if _MIPS_SIM == _MIPS_SIM_NABI32 +# define systemd_NR_renameat2 6315 +# endif +# if _MIPS_SIM == _MIPS_SIM_ABI64 +# define systemd_NR_renameat2 5311 +# endif +#elif defined __i386__ +# define systemd_NR_renameat2 353 +#elif defined __powerpc64__ +# define systemd_NR_renameat2 357 +#elif defined __s390__ || defined __s390x__ +# define systemd_NR_renameat2 347 +#elif defined __arc__ +# define systemd_NR_renameat2 276 +#else +# warning "renameat2() syscall number unknown for your architecture" +#endif +/* may be (invalid) negative number due to libseccomp, see PR 13319 */ +#if defined __NR_renameat2 && __NR_renameat2 >= 0 +# if defined systemd_NR_renameat2 +assert_cc(__NR_renameat2 == systemd_NR_renameat2); +# endif +#else +# if defined __NR_renameat2 +# undef __NR_renameat2 +# endif +# if defined systemd_NR_renameat2 +# define __NR_renameat2 systemd_NR_renameat2 +# endif +#endif + +#if !HAVE_RENAMEAT2 static inline int missing_renameat2(int oldfd, const char *oldname, int newfd, const char *newname, unsigned flags) { # ifdef __NR_renameat2 return syscall(__NR_renameat2, oldfd, oldname, newfd, newname, flags); @@ -326,31 +371,39 @@ static inline key_serial_t missing_request_key(const char *type, const char *des /* ======================================================================= */ -#if !HAVE_COPY_FILE_RANGE -/* may be (invalid) negative number due to libseccomp, see PR 13319 */ -# if ! (defined __NR_copy_file_range && __NR_copy_file_range >= 0) -# if defined __NR_copy_file_range -# undef __NR_copy_file_range -# endif -# if defined(__x86_64__) -# define __NR_copy_file_range 326 -# elif defined(__i386__) -# define __NR_copy_file_range 377 -# elif defined __s390__ -# define __NR_copy_file_range 375 -# elif defined __arm__ -# define __NR_copy_file_range 391 -# elif defined __aarch64__ -# define __NR_copy_file_range 285 -# elif defined __powerpc__ -# define __NR_copy_file_range 379 -# elif defined __arc__ -# define __NR_copy_file_range 285 -# else -# warning "__NR_copy_file_range not defined for your architecture" -# endif -# endif +#if defined(__x86_64__) +# define systemd_NR_copy_file_range 326 +#elif defined(__i386__) +# define systemd_NR_copy_file_range 377 +#elif defined __s390__ +# define systemd_NR_copy_file_range 375 +#elif defined __arm__ +# define systemd_NR_copy_file_range 391 +#elif defined __aarch64__ +# define systemd_NR_copy_file_range 285 +#elif defined __powerpc__ +# define systemd_NR_copy_file_range 379 +#elif defined __arc__ +# define systemd_NR_copy_file_range 285 +#else +# warning "copy_file_range() syscall number unknown for your architecture" +#endif +/* may be (invalid) negative number due to libseccomp, see PR 13319 */ +#if defined __NR_copy_file_range && __NR_copy_file_range >= 0 +# if defined systemd_NR_copy_file_range +assert_cc(__NR_copy_file_range == systemd_NR_copy_file_range); +# endif +#else +# if defined __NR_copy_file_range +# undef __NR_copy_file_range +# endif +# if defined systemd_NR_copy_file_range +# define __NR_copy_file_range systemd_NR_copy_file_range +# endif +#endif + +#if !HAVE_COPY_FILE_RANGE static inline ssize_t missing_copy_file_range(int fd_in, loff_t *off_in, int fd_out, loff_t *off_out, size_t len, @@ -368,31 +421,39 @@ static inline ssize_t missing_copy_file_range(int fd_in, loff_t *off_in, /* ======================================================================= */ -#if !HAVE_BPF -/* may be (invalid) negative number due to libseccomp, see PR 13319 */ -# if ! (defined __NR_bpf && __NR_bpf >= 0) -# if defined __NR_bpf -# undef __NR_bpf -# endif -# if defined __i386__ -# define __NR_bpf 357 -# elif defined __x86_64__ -# define __NR_bpf 321 -# elif defined __aarch64__ -# define __NR_bpf 280 -# elif defined __arm__ -# define __NR_bpf 386 -# elif defined __sparc__ -# define __NR_bpf 349 -# elif defined __s390__ -# define __NR_bpf 351 -# elif defined __tilegx__ -# define __NR_bpf 280 -# else -# warning "__NR_bpf not defined for your architecture" -# endif -# endif +#if defined __i386__ +# define systemd_NR_bpf 357 +#elif defined __x86_64__ +# define systemd_NR_bpf 321 +#elif defined __aarch64__ +# define systemd_NR_bpf 280 +#elif defined __arm__ +# define systemd_NR_bpf 386 +#elif defined __sparc__ +# define systemd_NR_bpf 349 +#elif defined __s390__ +# define systemd_NR_bpf 351 +#elif defined __tilegx__ +# define systemd_NR_bpf 280 +#else +# warning "bpf() syscall number unknown for your architecture" +#endif +/* may be (invalid) negative number due to libseccomp, see PR 13319 */ +#if defined __NR_bpf && __NR_bpf >= 0 +# if defined systemd_NR_bpf +assert_cc(__NR_bpf == systemd_NR_bpf); +# endif +#else +# if defined __NR_bpf +# undef __NR_bpf +# endif +# if defined systemd_NR_bpf +# define __NR_bpf systemd_NR_bpf +# endif +#endif + +#if !HAVE_BPF union bpf_attr; static inline int missing_bpf(int cmd, union bpf_attr *attr, size_t size) { @@ -410,69 +471,80 @@ static inline int missing_bpf(int cmd, union bpf_attr *attr, size_t size) { /* ======================================================================= */ #ifndef __IGNORE_pkey_mprotect +# if defined __i386__ +# define systemd_NR_pkey_mprotect 380 +# elif defined __x86_64__ +# define systemd_NR_pkey_mprotect 329 +# elif defined __arm__ +# define systemd_NR_pkey_mprotect 394 +# elif defined __aarch64__ +# define systemd_NR_pkey_mprotect 394 +# elif defined __powerpc__ +# define systemd_NR_pkey_mprotect 386 +# elif defined __s390__ +# define systemd_NR_pkey_mprotect 384 +# elif defined _MIPS_SIM +# if _MIPS_SIM == _MIPS_SIM_ABI32 +# define systemd_NR_pkey_mprotect 4363 +# endif +# if _MIPS_SIM == _MIPS_SIM_NABI32 +# define systemd_NR_pkey_mprotect 6327 +# endif +# if _MIPS_SIM == _MIPS_SIM_ABI64 +# define systemd_NR_pkey_mprotect 5323 +# endif +# else +# warning "pkey_mprotect() syscall number unknown for your architecture" +# endif + /* may be (invalid) negative number due to libseccomp, see PR 13319 */ -# if ! (defined __NR_pkey_mprotect && __NR_pkey_mprotect >= 0) +# if defined __NR_pkey_mprotect && __NR_pkey_mprotect >= 0 +# if defined systemd_NR_pkey_mprotect +assert_cc(__NR_pkey_mprotect == systemd_NR_pkey_mprotect); +# endif +# else # if defined __NR_pkey_mprotect # undef __NR_pkey_mprotect # endif -# if defined __i386__ -# define __NR_pkey_mprotect 380 -# elif defined __x86_64__ -# define __NR_pkey_mprotect 329 -# elif defined __arm__ -# define __NR_pkey_mprotect 394 -# elif defined __aarch64__ -# define __NR_pkey_mprotect 394 -# elif defined __powerpc__ -# define __NR_pkey_mprotect 386 -# elif defined __s390__ -# define __NR_pkey_mprotect 384 -# elif defined _MIPS_SIM -# if _MIPS_SIM == _MIPS_SIM_ABI32 -# define __NR_pkey_mprotect 4363 -# endif -# if _MIPS_SIM == _MIPS_SIM_NABI32 -# define __NR_pkey_mprotect 6327 -# endif -# if _MIPS_SIM == _MIPS_SIM_ABI64 -# define __NR_pkey_mprotect 5323 -# endif -# else -# warning "__NR_pkey_mprotect not defined for your architecture" +# if defined systemd_NR_pkey_mprotect +# define __NR_pkey_mprotect systemd_NR_pkey_mprotect # endif # endif #endif /* ======================================================================= */ -#if !HAVE_STATX -/* may be (invalid) negative number due to libseccomp, see PR 13319 */ -# if ! (defined __NR_statx && __NR_statx >= 0) -# if defined __NR_statx -# undef __NR_statx -# endif -# if defined __aarch64__ || defined __arm__ -# define __NR_statx 397 -# elif defined __alpha__ -# define __NR_statx 522 -# elif defined __i386__ || defined __powerpc64__ -# define __NR_statx 383 -# elif defined __sparc__ -# define __NR_statx 360 -# elif defined __x86_64__ -# define __NR_statx 332 -# else -# warning "__NR_statx not defined for your architecture" -# endif -# endif - -struct statx; +#if defined __aarch64__ || defined __arm__ +# define systemd_NR_statx 397 +#elif defined __alpha__ +# define systemd_NR_statx 522 +#elif defined __i386__ || defined __powerpc64__ +# define systemd_NR_statx 383 +#elif defined __sparc__ +# define systemd_NR_statx 360 +#elif defined __x86_64__ +# define systemd_NR_statx 332 +#else +# warning "statx() syscall number unknown for your architecture" #endif -/* This typedef is supposed to be always defined. */ -typedef struct statx struct_statx; +/* may be (invalid) negative number due to libseccomp, see PR 13319 */ +#if defined __NR_statx && __NR_statx >= 0 +# if defined systemd_NR_statx +assert_cc(__NR_statx == systemd_NR_statx); +# endif +#else +# if defined __NR_statx +# undef __NR_statx +# endif +# if defined systemd_NR_statx +# define __NR_statx systemd_NR_statx +# endif +#endif #if !HAVE_STATX +struct statx; + static inline ssize_t missing_statx(int dfd, const char *filename, unsigned flags, unsigned int mask, struct statx *buffer) { # ifdef __NR_statx return syscall(__NR_statx, dfd, filename, flags, mask, buffer); @@ -481,12 +553,18 @@ static inline ssize_t missing_statx(int dfd, const char *filename, unsigned flag return -1; # endif } +#endif +/* This typedef is supposed to be always defined. */ +typedef struct statx struct_statx; + +#if !HAVE_STATX # define statx(dfd, filename, flags, mask, buffer) missing_statx(dfd, filename, flags, mask, buffer) #endif -#if !HAVE_SET_MEMPOLICY +/* ======================================================================= */ +#if !HAVE_SET_MEMPOLICY enum { MPOL_DEFAULT, MPOL_PREFERRED, @@ -527,19 +605,28 @@ static inline long missing_get_mempolicy(int *mode, unsigned long *nodemask, # define get_mempolicy missing_get_mempolicy #endif -#if !HAVE_PIDFD_SEND_SIGNAL -/* may be (invalid) negative number due to libseccomp, see PR 13319 */ -# if ! (defined __NR_pidfd_send_signal && __NR_pidfd_send_signal >= 0) -# if defined __NR_pidfd_send_signal -# undef __NR_pidfd_send_signal -# endif +/* ======================================================================= */ + /* should be always defined, see kernel 39036cd2727395c3369b1051005da74059a85317 */ -# if defined(__alpha__) -# define __NR_pidfd_send_signal 534 -# else -# define __NR_pidfd_send_signal 424 -# endif +#if defined(__alpha__) +# define systemd_NR_pidfd_send_signal 534 +#else +# define systemd_NR_pidfd_send_signal 424 +#endif + +/* may be (invalid) negative number due to libseccomp, see PR 13319 */ +#if defined __NR_pidfd_send_signal && __NR_pidfd_send_signal >= 0 +# if defined systemd_NR_pidfd_send_signal +assert_cc(__NR_pidfd_send_signal == systemd_NR_pidfd_send_signal); # endif +#else +# if defined __NR_pidfd_send_signal +# undef __NR_pidfd_send_signal +# endif +# define __NR_pidfd_send_signal systemd_NR_pidfd_send_signal +#endif + +#if !HAVE_PIDFD_SEND_SIGNAL static inline int missing_pidfd_send_signal(int fd, int sig, siginfo_t *info, unsigned flags) { # ifdef __NR_pidfd_open return syscall(__NR_pidfd_send_signal, fd, sig, info, flags); @@ -552,19 +639,26 @@ static inline int missing_pidfd_send_signal(int fd, int sig, siginfo_t *info, un # define pidfd_send_signal missing_pidfd_send_signal #endif -#if !HAVE_PIDFD_OPEN -/* may be (invalid) negative number due to libseccomp, see PR 13319 */ -# if ! (defined __NR_pidfd_open && __NR_pidfd_open >= 0) -# if defined __NR_pidfd_open -# undef __NR_pidfd_open -# endif /* should be always defined, see kernel 7615d9e1780e26e0178c93c55b73309a5dc093d7 */ -# if defined(__alpha__) -# define __NR_pidfd_open 544 -# else -# define __NR_pidfd_open 434 -# endif +#if defined(__alpha__) +# define systemd_NR_pidfd_open 544 +#else +# define systemd_NR_pidfd_open 434 +#endif + +/* may be (invalid) negative number due to libseccomp, see PR 13319 */ +#if defined __NR_pidfd_open && __NR_pidfd_open >= 0 +# if defined systemd_NR_pidfd_open +assert_cc(__NR_pidfd_open == systemd_NR_pidfd_open); # endif +#else +# if defined __NR_pidfd_open +# undef __NR_pidfd_open +# endif +# define __NR_pidfd_open systemd_NR_pidfd_open +#endif + +#if !HAVE_PIDFD_OPEN static inline int missing_pidfd_open(pid_t pid, unsigned flags) { # ifdef __NR_pidfd_open return syscall(__NR_pidfd_open, pid, flags); @@ -577,9 +671,15 @@ static inline int missing_pidfd_open(pid_t pid, unsigned flags) { # define pidfd_open missing_pidfd_open #endif +/* ======================================================================= */ + #if !HAVE_RT_SIGQUEUEINFO static inline int missing_rt_sigqueueinfo(pid_t tgid, int sig, siginfo_t *info) { +# if defined __NR_rt_sigqueueinfo && __NR_rt_sigqueueinfo >= 0 return syscall(__NR_rt_sigqueueinfo, tgid, sig, info); +# else +# error "__NR_rt_sigqueueinfo not defined" +# endif } # define rt_sigqueueinfo missing_rt_sigqueueinfo