aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxc/xc_misc.c
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2010-10-18 17:37:31 +0100
committerIan Campbell <ian.campbell@citrix.com>2010-10-18 17:37:31 +0100
commit656ba9748a4af226415bf77039a20a1948444445 (patch)
treef0876fb377f6f4f7628e2813aad37bcda80ba862 /tools/libxc/xc_misc.c
parent5924f32d9c26f2b9475ea08499fbd5ca95df332c (diff)
downloadxen-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.c41
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,