On Sun, Sep 17, 2023 at 10:39 PM Karim Taha <kariem.taha2.7@gmail.com>
wrote:
> From: Stacey Son <sson@FreeBSD.org>
>
> Signed-off-by: Stacey Son <sson@FreeBSD.org>
> Signed-off-by: Karim Taha <kariem.taha2.7@gmail.com>
> ---
> bsd-user/bsd-proc.h | 24 ++++++++++++++++++++++++
> bsd-user/freebsd/os-syscall.c | 8 ++++++++
> 2 files changed, 32 insertions(+)
>
Reviewed-by: Warner Losh <imp@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
>
>