diff options
author | Ian Campbell <ian.campbell@citrix.com> | 2010-10-18 17:37:31 +0100 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2010-10-18 17:37:31 +0100 |
commit | 656ba9748a4af226415bf77039a20a1948444445 (patch) | |
tree | f0876fb377f6f4f7628e2813aad37bcda80ba862 /tools/libxc/xc_misc.c | |
parent | 5924f32d9c26f2b9475ea08499fbd5ca95df332c (diff) | |
download | xen-656ba9748a4af226415bf77039a20a1948444445.tar.gz xen-656ba9748a4af226415bf77039a20a1948444445.tar.bz2 xen-656ba9748a4af226415bf77039a20a1948444445.zip |
libxc: simplify performance counters API
Current function has heavily overloaded semantics for the various
arguments. Separate out into more specific functions.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Diffstat (limited to 'tools/libxc/xc_misc.c')
-rw-r--r-- | tools/libxc/xc_misc.c | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/tools/libxc/xc_misc.c b/tools/libxc/xc_misc.c index 47acdb2fb8..a64a633e29 100644 --- a/tools/libxc/xc_misc.c +++ b/tools/libxc/xc_misc.c @@ -167,20 +167,29 @@ int xc_mca_op(xc_interface *xch, struct xen_mc *mc) } #endif -int xc_perfc_control(xc_interface *xch, - uint32_t opcode, - xc_perfc_desc_t *desc, - xc_perfc_val_t *val, - int *nbr_desc, - int *nbr_val) +int xc_perfc_reset(xc_interface *xch) +{ + DECLARE_SYSCTL; + + sysctl.cmd = XEN_SYSCTL_perfc_op; + sysctl.u.perfc_op.cmd = XEN_SYSCTL_PERFCOP_reset; + set_xen_guest_handle(sysctl.u.perfc_op.desc, NULL); + set_xen_guest_handle(sysctl.u.perfc_op.val, NULL); + + return do_sysctl(xch, &sysctl); +} + +int xc_perfc_query_number(xc_interface *xch, + int *nbr_desc, + int *nbr_val) { int rc; DECLARE_SYSCTL; sysctl.cmd = XEN_SYSCTL_perfc_op; - sysctl.u.perfc_op.cmd = opcode; - set_xen_guest_handle(sysctl.u.perfc_op.desc, desc); - set_xen_guest_handle(sysctl.u.perfc_op.val, val); + sysctl.u.perfc_op.cmd = XEN_SYSCTL_PERFCOP_query; + set_xen_guest_handle(sysctl.u.perfc_op.desc, NULL); + set_xen_guest_handle(sysctl.u.perfc_op.val, NULL); rc = do_sysctl(xch, &sysctl); @@ -192,6 +201,20 @@ int xc_perfc_control(xc_interface *xch, return rc; } +int xc_perfc_query(xc_interface *xch, + xc_perfc_desc_t *desc, + xc_perfc_val_t *val) +{ + DECLARE_SYSCTL; + + sysctl.cmd = XEN_SYSCTL_perfc_op; + sysctl.u.perfc_op.cmd = XEN_SYSCTL_PERFCOP_query; + set_xen_guest_handle(sysctl.u.perfc_op.desc, desc); + set_xen_guest_handle(sysctl.u.perfc_op.val, val); + + return do_sysctl(xch, &sysctl); +} + int xc_lockprof_control(xc_interface *xch, uint32_t opcode, uint32_t *n_elems, |