[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] libxc: simplify lock profiling API
# HG changeset patch # User Ian Campbell <ian.campbell@xxxxxxxxxx> # Date 1287419870 -3600 # Node ID 8e00eeb1c0d33818547dcc9534872c0bbe1a750c # Parent b15d1f14810fb746b2a2df24f7075d333532cf58 libxc: simplify lock profiling API Current function has heavily overloaded semantics for the various arguments. Separate out into more specific functions. Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> --- tools/libxc/xc_misc.c | 40 ++++++++++++++++++++++++++++++++-------- tools/libxc/xenctrl.h | 12 +++++++----- tools/misc/xenlockprof.c | 9 +++------ 3 files changed, 42 insertions(+), 19 deletions(-) diff -r b15d1f14810f -r 8e00eeb1c0d3 tools/libxc/xc_misc.c --- a/tools/libxc/xc_misc.c Mon Oct 18 17:37:31 2010 +0100 +++ b/tools/libxc/xc_misc.c Mon Oct 18 17:37:50 2010 +0100 @@ -215,8 +215,35 @@ int xc_perfc_query(xc_interface *xch, return do_sysctl(xch, &sysctl); } -int xc_lockprof_control(xc_interface *xch, - uint32_t opcode, +int xc_lockprof_reset(xc_interface *xch) +{ + DECLARE_SYSCTL; + + sysctl.cmd = XEN_SYSCTL_lockprof_op; + sysctl.u.lockprof_op.cmd = XEN_SYSCTL_LOCKPROF_reset; + set_xen_guest_handle(sysctl.u.lockprof_op.data, NULL); + + return do_sysctl(xch, &sysctl); +} + +int xc_lockprof_query_number(xc_interface *xch, + uint32_t *n_elems) +{ + int rc; + DECLARE_SYSCTL; + + sysctl.cmd = XEN_SYSCTL_lockprof_op; + sysctl.u.lockprof_op.cmd = XEN_SYSCTL_LOCKPROF_query; + set_xen_guest_handle(sysctl.u.lockprof_op.data, NULL); + + rc = do_sysctl(xch, &sysctl); + + *n_elems = sysctl.u.lockprof_op.nr_elem; + + return rc; +} + +int xc_lockprof_query(xc_interface *xch, uint32_t *n_elems, uint64_t *time, xc_lockprof_data_t *data) @@ -225,16 +252,13 @@ int xc_lockprof_control(xc_interface *xc DECLARE_SYSCTL; sysctl.cmd = XEN_SYSCTL_lockprof_op; - sysctl.u.lockprof_op.cmd = opcode; - sysctl.u.lockprof_op.max_elem = n_elems ? *n_elems : 0; + sysctl.u.lockprof_op.cmd = XEN_SYSCTL_LOCKPROF_query; + sysctl.u.lockprof_op.max_elem = *n_elems; set_xen_guest_handle(sysctl.u.lockprof_op.data, data); rc = do_sysctl(xch, &sysctl); - if (n_elems) - *n_elems = sysctl.u.lockprof_op.nr_elem; - if (time) - *time = sysctl.u.lockprof_op.time; + *n_elems = sysctl.u.lockprof_op.nr_elem; return rc; } diff -r b15d1f14810f -r 8e00eeb1c0d3 tools/libxc/xenctrl.h --- a/tools/libxc/xenctrl.h Mon Oct 18 17:37:31 2010 +0100 +++ b/tools/libxc/xenctrl.h Mon Oct 18 17:37:50 2010 +0100 @@ -898,12 +898,14 @@ int xc_perfc_query(xc_interface *xch, xc_perfc_val_t *val); typedef xen_sysctl_lockprof_data_t xc_lockprof_data_t; +int xc_lockprof_reset(xc_interface *xch); +int xc_lockprof_query_number(xc_interface *xch, + uint32_t *n_elems); /* IMPORTANT: The caller is responsible for mlock()'ing the @data array. */ -int xc_lockprof_control(xc_interface *xch, - uint32_t opcode, - uint32_t *n_elems, - uint64_t *time, - xc_lockprof_data_t *data); +int xc_lockprof_query(xc_interface *xch, + uint32_t *n_elems, + uint64_t *time, + xc_lockprof_data_t *data); /** * Memory maps a range within one domain to a local address range. Mappings diff -r b15d1f14810f -r 8e00eeb1c0d3 tools/misc/xenlockprof.c --- a/tools/misc/xenlockprof.c Mon Oct 18 17:37:31 2010 +0100 +++ b/tools/misc/xenlockprof.c Mon Oct 18 17:37:50 2010 +0100 @@ -60,8 +60,7 @@ int main(int argc, char *argv[]) if ( argc > 1 ) { - if ( xc_lockprof_control(xc_handle, XEN_SYSCTL_LOCKPROF_reset, NULL, - NULL, NULL) != 0 ) + if ( xc_lockprof_reset(xc_handle) != 0 ) { fprintf(stderr, "Error reseting profile data: %d (%s)\n", errno, strerror(errno)); @@ -71,8 +70,7 @@ int main(int argc, char *argv[]) } n = 0; - if ( xc_lockprof_control(xc_handle, XEN_SYSCTL_LOCKPROF_query, &n, - NULL, NULL) != 0 ) + if ( xc_lockprof_query_number(xc_handle, &n) != 0 ) { fprintf(stderr, "Error getting number of profile records: %d (%s)\n", errno, strerror(errno)); @@ -89,8 +87,7 @@ int main(int argc, char *argv[]) } i = n; - if ( xc_lockprof_control(xc_handle, XEN_SYSCTL_LOCKPROF_query, &i, - &time, data) != 0 ) + if ( xc_lockprof_query(xc_handle, &i, &time, data) != 0 ) { fprintf(stderr, "Error getting profile records: %d (%s)\n", errno, strerror(errno)); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |