qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 05/19] linux-user: Define macro for size of h


From: Laurent Vivier
Subject: Re: [Qemu-devel] [PATCH v2 05/19] linux-user: Define macro for size of host kernel sigset_t
Date: Mon, 6 Jun 2016 23:47:20 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.0


Le 27/05/2016 à 16:51, Peter Maydell a écrit :
> Some host syscalls take an argument specifying the size of a
> host kernel's sigset_t (which isn't necessarily the same as
> that of the host libc's type of that name). Instead of hardcoding
> _NSIG / 8 where we do this, define and use a SIGSET_T_SIZE macro.
> 
> Signed-off-by: Peter Maydell <address@hidden>

Reviewed-by: Laurent Vivier <address@hidden>

> ---
>  linux-user/syscall.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index df70255..e4b7404 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -119,6 +119,10 @@ int __clone2(int (*fn)(void *), void *child_stack_base,
>  #define      VFAT_IOCTL_READDIR_BOTH         _IOR('r', 1, struct 
> linux_dirent [2])
>  #define      VFAT_IOCTL_READDIR_SHORT        _IOR('r', 2, struct 
> linux_dirent [2])
>  
> +/* This is the size of the host kernel's sigset_t, needed where we make
> + * direct system calls that take a sigset_t pointer and a size.
> + */
> +#define SIGSET_T_SIZE (_NSIG / 8)
>  
>  #undef _syscall0
>  #undef _syscall1
> @@ -7221,7 +7225,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long 
> arg1,
>              /* Extract the two packed args for the sigset */
>              if (arg6) {
>                  sig_ptr = &sig;
> -                sig.size = _NSIG / 8;
> +                sig.size = SIGSET_T_SIZE;
>  
>                  arg7 = lock_user(VERIFY_READ, arg6, sizeof(*arg7) * 2, 1);
>                  if (!arg7) {
> @@ -8275,7 +8279,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long 
> arg1,
>                      set = NULL;
>                  }
>  
> -                ret = get_errno(sys_ppoll(pfd, nfds, timeout_ts, set, 
> _NSIG/8));
> +                ret = get_errno(sys_ppoll(pfd, nfds, timeout_ts,
> +                                          set, SIGSET_T_SIZE));
>  
>                  if (!is_error(ret) && arg3) {
>                      host_to_target_timespec(arg3, timeout_ts);
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]