On Sun, Sep 17, 2023 at 10:39 PM Karim Taha <kariem.taha...@gmail.com> wrote:
> From: Stacey Son <s...@freebsd.org> > > Signed-off-by: Stacey Son <s...@freebsd.org> > Signed-off-by: Karim Taha <kariem.taha...@gmail.com> > --- > bsd-user/bsd-proc.h | 24 ++++++++++++++++++++++++ > bsd-user/freebsd/os-syscall.c | 8 ++++++++ > 2 files changed, 32 insertions(+) > Reviewed-by: Warner Losh <i...@bsdimp.com> Looks right to my eye. Let's see if Richard catches anything. > diff --git a/bsd-user/bsd-proc.h b/bsd-user/bsd-proc.h > index fff1d4cded..89792d26c6 100644 > --- a/bsd-user/bsd-proc.h > +++ b/bsd-user/bsd-proc.h > @@ -390,4 +390,28 @@ static inline abi_long do_bsd_ptrace(abi_long arg1, > abi_long arg2, > return -TARGET_ENOSYS; > } > > +/* getpriority(2) */ > +static inline abi_long do_bsd_getpriority(abi_long which, abi_long who) > +{ > + abi_long ret; > + /* > + * Note that negative values are valid for getpriority, so we must > + * differentiate based on errno settings. > + */ > + errno = 0; > + ret = getpriority(which, who); > + if (ret == -1 && errno != 0) { > + return -host_to_target_errno(errno); > + } > + > + return ret; > +} > + > +/* setpriority(2) */ > +static inline abi_long do_bsd_setpriority(abi_long which, abi_long who, > + abi_long prio) > +{ > + return get_errno(setpriority(which, who, prio)); > +} > + > #endif /* !BSD_PROC_H_ */ > diff --git a/bsd-user/freebsd/os-syscall.c b/bsd-user/freebsd/os-syscall.c > index 1a760b1380..71a2657dd0 100644 > --- a/bsd-user/freebsd/os-syscall.c > +++ b/bsd-user/freebsd/os-syscall.c > @@ -359,6 +359,14 @@ static abi_long freebsd_syscall(void *cpu_env, int > num, abi_long arg1, > ret = do_bsd_ptrace(arg1, arg2, arg3, arg4); > break; > > + case TARGET_FREEBSD_NR_getpriority: /* getpriority(2) */ > + ret = do_bsd_getpriority(arg1, arg2); > + break; > + > + case TARGET_FREEBSD_NR_setpriority: /* setpriority(2) */ > + ret = do_bsd_setpriority(arg1, arg2, arg3); > + break; > + > > /* > * File system calls. > -- > 2.42.0 > >