aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorWilly Tarreau2021-01-21 08:20:25 +0100
committerPaul E. McKenney2021-01-21 10:06:44 -0800
commitc0c7c103756fee25aadfd5c36f7b86e318f9abb4 (patch)
treef86331f127a31ec70c3852d703bf694dbb1e7245 /tools
parent79f220e56dc85739aa5462fa8a1abd4a44f002e0 (diff)
tools/nolibc: Make getpgrp() fall back to getpgid(0)
The getpgrp() syscall is not implemented on arm64, so this commit instead uses getpgid(0) when getpgrp() is not available. This is a port of nolibc's upstream commit 2379f25073f9 to the Linux kernel. Fixes: 66b6f755ad45 ("rcutorture: Import a copy of nolibc") Tested-by: Valentin Schneider <valentin.schneider@arm.com> Tested-by: Mark Rutland <mark.rutland@arm.com> [arm64] Signed-off-by: Willy Tarreau <w@1wt.eu> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Diffstat (limited to 'tools')
-rw-r--r--tools/include/nolibc/nolibc.h20
1 files changed, 19 insertions, 1 deletions
diff --git a/tools/include/nolibc/nolibc.h b/tools/include/nolibc/nolibc.h
index 5fda4d844054..9209da89044a 100644
--- a/tools/include/nolibc/nolibc.h
+++ b/tools/include/nolibc/nolibc.h
@@ -1545,9 +1545,15 @@ int sys_getdents64(int fd, struct linux_dirent64 *dirp, int count)
}
static __attribute__((unused))
+pid_t sys_getpgid(pid_t pid)
+{
+ return my_syscall1(__NR_getpgid, pid);
+}
+
+static __attribute__((unused))
pid_t sys_getpgrp(void)
{
- return my_syscall0(__NR_getpgrp);
+ return sys_getpgid(0);
}
static __attribute__((unused))
@@ -1951,6 +1957,18 @@ int getdents64(int fd, struct linux_dirent64 *dirp, int count)
}
static __attribute__((unused))
+pid_t getpgid(pid_t pid)
+{
+ pid_t ret = sys_getpgid(pid);
+
+ if (ret < 0) {
+ SET_ERRNO(-ret);
+ ret = -1;
+ }
+ return ret;
+}
+
+static __attribute__((unused))
pid_t getpgrp(void)
{
pid_t ret = sys_getpgrp();