Message ID | 20181025172057.20414-22-cota@braap.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Plugin support | expand |
Emilio G. Cota <cota@braap.org> writes: > Signed-off-by: Emilio G. Cota <cota@braap.org> > --- > 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
On Fri, Nov 23, 2018 at 17:04:28 +0000, Alex Bennée wrote: > > Emilio G. Cota <cota@braap.org> writes: > > > Signed-off-by: Emilio G. Cota <cota@braap.org> > > --- > > 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(...) > > ? Yes, I remember that discussion and agree that a common function here would be best. Emilio
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); 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; }
Signed-off-by: Emilio G. Cota <cota@braap.org> --- bsd-user/syscall.c | 9 +++++++++ linux-user/syscall.c | 3 +++ 2 files changed, 12 insertions(+)