diff mbox series

linux-user: Implement membarrier syscall

Message ID mvmpnomohfm.fsf@suse.de
State New
Headers show
Series linux-user: Implement membarrier syscall | expand

Commit Message

Andreas Schwab May 13, 2019, 9:02 a.m. UTC
Signed-off-by: Andreas Schwab <schwab@suse.de>
---
 linux-user/syscall.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Laurent Vivier May 13, 2019, 11:02 a.m. UTC | #1
On 13/05/2019 11:02, Andreas Schwab wrote:
> Signed-off-by: Andreas Schwab <schwab@suse.de>
> ---
>   linux-user/syscall.c | 7 +++++++
>   1 file changed, 7 insertions(+)
> 

Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Laurent Vivier Feb. 18, 2020, 9:33 p.m. UTC | #2
Le 13/05/2019 à 11:02, Andreas Schwab a écrit :
> Signed-off-by: Andreas Schwab <schwab@suse.de>
> ---
>  linux-user/syscall.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index f5ff6f5dc8..80399f4eb0 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -313,6 +313,9 @@ _syscall3(int, getrandom, void *, buf, size_t, buflen, unsigned int, flags)
>  _syscall5(int, kcmp, pid_t, pid1, pid_t, pid2, int, type,
>            unsigned long, idx1, unsigned long, idx2)
>  #endif
> +#if defined(TARGET_NR_membarrier) && defined(__NR_membarrier)
> +_syscall2(int, membarrier, int, cmd, int, flags)
> +#endif
>  
>  static bitmask_transtbl fcntl_flags_tbl[] = {
>    { TARGET_O_ACCMODE,   TARGET_O_WRONLY,    O_ACCMODE,   O_WRONLY,    },
> @@ -11620,6 +11623,10 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
>          /* PowerPC specific.  */
>          return do_swapcontext(cpu_env, arg1, arg2, arg3);
>  #endif
> +#if defined TARGET_NR_membarrier && defined __NR_membarrier
> +    case TARGET_NR_membarrier:
> +        return get_errno(membarrier(arg1, arg2));
> +#endif
>  
>      default:
>          qemu_log_mask(LOG_UNIMP, "Unsupported syscall: %d\n", num);
> 

Applied to my linux-user branch.

Thanks,
Laurent
diff mbox series

Patch

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index f5ff6f5dc8..80399f4eb0 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -313,6 +313,9 @@  _syscall3(int, getrandom, void *, buf, size_t, buflen, unsigned int, flags)
 _syscall5(int, kcmp, pid_t, pid1, pid_t, pid2, int, type,
           unsigned long, idx1, unsigned long, idx2)
 #endif
+#if defined(TARGET_NR_membarrier) && defined(__NR_membarrier)
+_syscall2(int, membarrier, int, cmd, int, flags)
+#endif
 
 static bitmask_transtbl fcntl_flags_tbl[] = {
   { TARGET_O_ACCMODE,   TARGET_O_WRONLY,    O_ACCMODE,   O_WRONLY,    },
@@ -11620,6 +11623,10 @@  static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
         /* PowerPC specific.  */
         return do_swapcontext(cpu_env, arg1, arg2, arg3);
 #endif
+#if defined TARGET_NR_membarrier && defined __NR_membarrier
+    case TARGET_NR_membarrier:
+        return get_errno(membarrier(arg1, arg2));
+#endif
 
     default:
         qemu_log_mask(LOG_UNIMP, "Unsupported syscall: %d\n", num);