https://bugs.gentoo.org/911375 https://gitlab.com/procps-ng/procps/-/commit/90a0ddcd64c2d43dc2c2c856b1b42b5cae6b8a44 From 90a0ddcd64c2d43dc2c2c856b1b42b5cae6b8a44 Mon Sep 17 00:00:00 2001 From: Markus Mayer Date: Wed, 11 Dec 2024 14:53:33 -0800 Subject: [PATCH] pgrep: provide definition for __NR_pidfd_open if needed We already implement pidfd_open() ourselves if libc doesn't provide it. Let's also provide our own definition of __NR_pidfd_open in case the kernel headers don't contain it. This way, pgrep can provide its full capabilities after being built against older kernel headers (for increased compatibility) but being run on systems with newer kernels. Signed-off-by: Markus Mayer --- configure.ac | 2 +- src/pgrep.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 1e984b12..14ba3ad7 100644 --- a/configure.ac +++ b/configure.ac @@ -325,7 +325,7 @@ AS_IF([[test "x$enable_pidwait" = xyes -a "x$have_pidfd_open" = xno]], AC_COMPILE_IFELSE([AC_LANG_SOURCE([ #include #ifndef __NR_pidfd_open -#error __NR_pidfd_open not defined +#warning __NR_pidfd_open not defined; using our definition #endif ])], AC_MSG_RESULT([yes]), diff --git a/src/pgrep.c b/src/pgrep.c index 2c6b06b8..6fc25dd4 100644 --- a/src/pgrep.c +++ b/src/pgrep.c @@ -874,6 +874,15 @@ static int signal_option(int *argc, char **argv) } #if defined(ENABLE_PIDWAIT) && !defined(HAVE_PIDFD_OPEN) + +#ifndef __NR_pidfd_open +#ifdef __alpha__ +#define __NR_pidfd_open 544 +#else +#define __NR_pidfd_open 434 +#endif +#endif + static int pidfd_open (pid_t pid, unsigned int flags) { return syscall(__NR_pidfd_open, pid, flags); -- GitLab