diff options
author | David Vrabel <david.vrabel@citrix.com> | 2012-10-03 11:11:35 +0100 |
---|---|---|
committer | David Vrabel <david.vrabel@citrix.com> | 2012-10-03 11:11:35 +0100 |
commit | caf512bef7b2801c7f11c924b9bdfb8c0840fbe2 (patch) | |
tree | 2779aa6b25e6005c8f8761d30af3d4404bde1160 /xen/common/multicall.c | |
parent | 86b35acb001f977eb1f82df6c07edaef173f4232 (diff) | |
download | xen-caf512bef7b2801c7f11c924b9bdfb8c0840fbe2.tar.gz xen-caf512bef7b2801c7f11c924b9bdfb8c0840fbe2.tar.bz2 xen-caf512bef7b2801c7f11c924b9bdfb8c0840fbe2.zip |
trace: trace hypercalls inside a multicall
Add a trace record for every hypercall inside a multicall. These use
a new event ID (with a different sub-class ) so they may be filtered
out if only the calls into hypervisor are of interest.
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Acked-by: George Dunlap <george.dunlap@citrix.com>
Committed-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/common/multicall.c')
-rw-r--r-- | xen/common/multicall.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/xen/common/multicall.c b/xen/common/multicall.c index 6c1a9d7a67..ca1839d987 100644 --- a/xen/common/multicall.c +++ b/xen/common/multicall.c @@ -11,14 +11,28 @@ #include <xen/multicall.h> #include <xen/guest_access.h> #include <xen/perfc.h> +#include <xen/trace.h> #include <asm/current.h> #include <asm/hardirq.h> #ifndef COMPAT typedef long ret_t; #define xlat_multicall_entry(mcs) + +static void __trace_multicall_call(multicall_entry_t *call) +{ + __trace_hypercall(TRC_PV_HYPERCALL_SUBCALL, call->op, call->args); +} #endif +static void trace_multicall_call(multicall_entry_t *call) +{ + if ( !tb_init_done ) + return; + + __trace_multicall_call(call); +} + ret_t do_multicall( XEN_GUEST_HANDLE(multicall_entry_t) call_list, unsigned int nr_calls) @@ -47,6 +61,8 @@ do_multicall( break; } + trace_multicall_call(&mcs->call); + do_multicall_call(&mcs->call); #ifndef NDEBUG |