Skip to content

Commit

Permalink
tools/nolibc: Make getpgrp() fall back to getpgid(0)
Browse files Browse the repository at this point in the history
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: 66b6f75 ("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>
  • Loading branch information
Willy Tarreau authored and Paul E. McKenney committed Jan 21, 2021
1 parent 79f220e commit c0c7c10
Showing 1 changed file with 19 additions and 1 deletion.
20 changes: 19 additions & 1 deletion tools/include/nolibc/nolibc.h
Original file line number Diff line number Diff line change
Expand Up @@ -1544,10 +1544,16 @@ int sys_getdents64(int fd, struct linux_dirent64 *dirp, int count)
return my_syscall3(__NR_getdents64, fd, dirp, 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))
Expand Down Expand Up @@ -1950,6 +1956,18 @@ int getdents64(int fd, struct linux_dirent64 *dirp, int count)
return ret;
}

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)
{
Expand Down

0 comments on commit c0c7c10

Please sign in to comment.