[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC 21/48] *-user: plugin syscalls
From: |
Alex Bennée |
Subject: |
Re: [Qemu-devel] [RFC 21/48] *-user: plugin syscalls |
Date: |
Fri, 23 Nov 2018 17:04:28 +0000 |
User-agent: |
mu4e 1.1.0; emacs 26.1.90 |
Emilio G. Cota <address@hidden> writes:
> Signed-off-by: Emilio G. Cota <address@hidden>
> ---
> bsd-user/syscall.c | 9 +++++++++
> linux-user/syscall.c | 3 +++
> 2 files changed, 12 insertions(+)
>
> diff --git a/bsd-user/syscall.c b/bsd-user/syscall.c
> index b7818af450..4993f81b2b 100644
> --- a/bsd-user/syscall.c
> +++ b/bsd-user/syscall.c
> @@ -323,6 +323,8 @@ abi_long do_freebsd_syscall(void *cpu_env, int num,
> abi_long arg1,
> gemu_log("freebsd syscall %d\n", num);
> #endif
> trace_guest_user_syscall(cpu, num, arg1, arg2, arg3, arg4, arg5, arg6,
> arg7, arg8);
> + qemu_plugin_vcpu_syscall(cpu, num, arg1, arg2, arg3, arg4, arg5, arg6,
> arg7,
> + arg8);
I think we discussed this on my series about avoiding this sort of
duplication by providing a wrapper for trace points that are also plugin
hooks. So something like:
trace_and_plugin_guest_user_syscall(...)
Although it's probably worth keeping the trace names grep-able so maybe:
plug_trace_guest_user_syscall(...)
?
> if(do_strace)
> print_freebsd_syscall(num, arg1, arg2, arg3, arg4, arg5, arg6);
>
> @@ -404,6 +406,7 @@ abi_long do_freebsd_syscall(void *cpu_env, int num,
> abi_long arg1,
> if (do_strace)
> print_freebsd_syscall_ret(num, ret);
> trace_guest_user_syscall_ret(cpu, num, ret);
> + qemu_plugin_vcpu_syscall_ret(cpu, num, ret);
> return ret;
> efault:
> ret = -TARGET_EFAULT;
> @@ -422,6 +425,8 @@ abi_long do_netbsd_syscall(void *cpu_env, int num,
> abi_long arg1,
> gemu_log("netbsd syscall %d\n", num);
> #endif
> trace_guest_user_syscall(cpu, num, arg1, arg2, arg3, arg4, arg5, arg6,
> 0, 0);
> + qemu_plugin_vcpu_syscall(cpu, num, arg1, arg2, arg3, arg4, arg5, arg6, 0,
> + 0);
> if(do_strace)
> print_netbsd_syscall(num, arg1, arg2, arg3, arg4, arg5, arg6);
>
> @@ -480,6 +485,7 @@ abi_long do_netbsd_syscall(void *cpu_env, int num,
> abi_long arg1,
> if (do_strace)
> print_netbsd_syscall_ret(num, ret);
> trace_guest_user_syscall_ret(cpu, num, ret);
> + qemu_plugin_vcpu_syscall_ret(cpu, num, ret);
> return ret;
> efault:
> ret = -TARGET_EFAULT;
> @@ -498,6 +504,8 @@ abi_long do_openbsd_syscall(void *cpu_env, int num,
> abi_long arg1,
> gemu_log("openbsd syscall %d\n", num);
> #endif
> trace_guest_user_syscall(cpu, num, arg1, arg2, arg3, arg4, arg5, arg6,
> 0, 0);
> + qemu_plugin_vcpu_syscall(cpu, num, arg1, arg2, arg3, arg4, arg5, arg6, 0,
> + 0);
> if(do_strace)
> print_openbsd_syscall(num, arg1, arg2, arg3, arg4, arg5, arg6);
>
> @@ -556,6 +564,7 @@ abi_long do_openbsd_syscall(void *cpu_env, int num,
> abi_long arg1,
> if (do_strace)
> print_openbsd_syscall_ret(num, ret);
> trace_guest_user_syscall_ret(cpu, num, ret);
> + qemu_plugin_vcpu_syscall_ret(cpu, num, ret);
> return ret;
> efault:
> ret = -TARGET_EFAULT;
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index ae3c0dfef7..a6d17a9f37 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -11232,6 +11232,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long
> arg1,
>
> trace_guest_user_syscall(cpu, num, arg1, arg2, arg3, arg4,
> arg5, arg6, arg7, arg8);
> + qemu_plugin_vcpu_syscall(cpu, num, arg1, arg2, arg3, arg4, arg5, arg6,
> arg7,
> + arg8);
>
> if (unlikely(do_strace)) {
> print_syscall(num, arg1, arg2, arg3, arg4, arg5, arg6);
> @@ -11244,5 +11246,6 @@ abi_long do_syscall(void *cpu_env, int num, abi_long
> arg1,
> }
>
> trace_guest_user_syscall_ret(cpu, num, ret);
> + qemu_plugin_vcpu_syscall_ret(cpu, num, ret);
> return ret;
> }
--
Alex Bennée
- Re: [Qemu-devel] [RFC 21/48] *-user: plugin syscalls,
Alex Bennée <=