[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 11/12] linux-user: Support target-to-host transl
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PATCH 11/12] linux-user: Support target-to-host translation of mlockall argument |
Date: |
Mon, 4 Aug 2014 18:19:04 +0100 |
On 4 August 2014 17:45, Tom Musta <address@hidden> wrote:
> The argument to the mlockall system call is not necessarily the same on
> all platforms and thus may require translation prior to passing to the
> host.
>
> For example, PowerPC 64 bit platforms define values for MCL_CURRENT
> (0x2000) and MCL_FUTURE (0x4000) which are different from Intel platforms
> (0x1 and 0x2, respectively)
>
> Signed-off-by: Tom Musta <address@hidden>
>
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 5660520..fea54be 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -4934,6 +4934,34 @@ static inline abi_long
> host_to_target_itimerspec(abi_ulong target_addr,
> return 0;
> }
>
> +#if defined(TARGET_NR_mlockall)
> +
> +#if defined(TARGET_PPC64)
> +#define TARGET_MLOCKALL_MCL_CURRENT 0x2000
> +#define TARGET_MLOCKALL_MCL_FUTURE 0x4000
> +#endif
These shouldn't be here -- they ought to go in some header file
in linux-user/ppc.
> +static inline int target_to_host_mlockall_arg(int arg)
> +{
> + int result = 0;
> +
> +#ifdef TARGET_MLOCKALL_MCL_CURRENT
> + if (arg & TARGET_MLOCKALL_MCL_CURRENT) {
> + result |= MCL_CURRENT;
> + arg ^= TARGET_MLOCKALL_MCL_CURRENT;
> + }
> +#endif
> +#ifdef TARGET_MLOCKALL_MCL_FUTURE
> + if (arg & TARGET_MLOCKALL_MCL_FUTURE) {
> + result |= MCL_FUTURE;
> + arg ^= TARGET_MLOCKALL_MCL_FUTURE;
> + }
> +#endif
Rather than conditionalizing all this on whether
TARGET_MLOCKALL_* are defined we should just
define them for all our target architectures. (Otherwise
other-arch-on-PPC-host won't work.)
The right values are:
MCL_CURRENT:
* PPC, SPARC, Alpha: 0x2000
* everything else: 1
MCL_FUTURE:
* PPC, SPARC, Alpha: 0x4000
* everything else: 2
It's probably bogus to pass unknown flags through...
(For once MIPS isn't the weirdo.)
thanks
-- PMM
- [Qemu-devel] [PATCH 08/12] linux-user: Detect fault in sched_rr_get_interval, (continued)
- [Qemu-devel] [PATCH 08/12] linux-user: Detect fault in sched_rr_get_interval, Tom Musta, 2014/08/04
- [Qemu-devel] [PATCH 09/12] linux-user: Minimum Sig Handler Stack Size for PPC64 ELF V2, Tom Musta, 2014/08/04
- [Qemu-devel] [PATCH 10/12] linux-user: clock_nanosleep errno Handling on PPC, Tom Musta, 2014/08/04
- [Qemu-devel] [PATCH 11/12] linux-user: Support target-to-host translation of mlockall argument, Tom Musta, 2014/08/04
- Re: [Qemu-devel] [PATCH 11/12] linux-user: Support target-to-host translation of mlockall argument,
Peter Maydell <=
- [Qemu-devel] [PATCH 12/12] linux-user: writev Partial Writes, Tom Musta, 2014/08/04
- Re: [Qemu-devel] [PATCH 00/12] target-ppc: Linux-User Mode Bug Fixes for Power, Riku Voipio, 2014/08/12