[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH v9 01/27] Revert "libxc/libxl/python/xenstat/ocaml: Use new XEN_VERSION hypercall"



This reverts commit d275ec9ca8a86f7c9c213f3551194d471ce90fbd.

As we prefer to still utilize the old XENVER_ hypercall.

Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Requested-and-acked-by: Jan Beulich <jbeulich@xxxxxxxx>
---
 tools/libxc/include/xenctrl.h          | 32 +-------------
 tools/libxc/xc_core.c                  | 35 ++++++++--------
 tools/libxc/xc_dom_boot.c              | 12 +-----
 tools/libxc/xc_domain.c                |  3 +-
 tools/libxc/xc_private.c               | 53 +++++++++++++++++++----
 tools/libxc/xc_private.h               |  7 ++--
 tools/libxc/xc_resume.c                |  3 +-
 tools/libxc/xc_sr_save.c               |  9 ++--
 tools/libxc/xg_save_restore.h          |  6 +--
 tools/libxl/libxl.c                    | 77 +++++++++++++---------------------
 tools/ocaml/libs/xc/xenctrl_stubs.c    | 39 ++++++++++-------
 tools/python/xen/lowlevel/xc/xc.c      | 30 ++++++-------
 tools/xenstat/libxenstat/src/xenstat.c | 12 +++---
 tools/xentrace/xenctx.c                |  3 +-
 14 files changed, 146 insertions(+), 175 deletions(-)

diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h
index f5a034a..42f201b 100644
--- a/tools/libxc/include/xenctrl.h
+++ b/tools/libxc/include/xenctrl.h
@@ -1536,37 +1536,7 @@ int xc_tbuf_set_evt_mask(xc_interface *xch, uint32_t 
mask);
 int xc_domctl(xc_interface *xch, struct xen_domctl *domctl);
 int xc_sysctl(xc_interface *xch, struct xen_sysctl *sysctl);
 
-/**
- * This function returns the size of buffer to be allocated for
- * the cmd. The cmd are XEN_VERSION_*.
- */
-ssize_t xc_version_len(xc_interface *xch, unsigned int cmd);
-
-/**
- * This function retrieves the information from the version_op hypercall.
- * The len is the size of the arg buffer. If arg is NULL, will not
- * perform hypercall - instead will just return the size of arg
- * buffer that is needed.
- *
- * Note that prior to Xen 4.7 this would return 0 for success and
- * negative value (-1) for error (with the error in errno). In Xen 4.7
- * and later for success it will return an positive value which is the
- * number of bytes copied in arg.
- *
- * It can also return -1 with various errno values:
- *  - EPERM - not permitted.
- *  - ENOBUFS - the len was to short, output in arg truncated.
- *  - ENOSYS - not implemented.
- *
- * @parm xch a handle to an open hypervisor interface
- * @parm cmd XEN_VERSION_* value
- * @param arg Pointer to xen_version_op_buf_t or xen_version_op_val_t
- * @param len Size of arg
- * @return size of bytes copied in arg on success, -1 on failure (and
- * errno will contain the error)
- *
- */
-int xc_version(xc_interface *xch, unsigned int cmd, void *arg, size_t len);
+int xc_version(xc_interface *xch, int cmd, void *arg);
 
 int xc_flask_op(xc_interface *xch, xen_flask_op_t *op);
 
diff --git a/tools/libxc/xc_core.c b/tools/libxc/xc_core.c
index cfeba6b..d792566 100644
--- a/tools/libxc/xc_core.c
+++ b/tools/libxc/xc_core.c
@@ -270,43 +270,42 @@ elfnote_fill_xen_version(xc_interface *xch,
                          *xen_version)
 {
     int rc;
-    xen_version_op_val_t val = 0;
     memset(xen_version, 0, sizeof(*xen_version));
 
-    rc = xc_version(xch, XEN_VERSION_version, &val, sizeof(val));
+    rc = xc_version(xch, XENVER_version, NULL);
     if ( rc < 0 )
         return rc;
-    xen_version->major_version = val >> 16;
-    xen_version->minor_version = val & ((1 << 16) - 1);
+    xen_version->major_version = rc >> 16;
+    xen_version->minor_version = rc & ((1 << 16) - 1);
 
-    rc = xc_version(xch, XEN_VERSION_extraversion,
-                    xen_version->extra_version,
-                    sizeof(xen_version->extra_version));
+    rc = xc_version(xch, XENVER_extraversion,
+                    &xen_version->extra_version);
     if ( rc < 0 )
         return rc;
 
-    rc = xc_version(xch, XEN_VERSION_capabilities,
-                    xen_version->capabilities,
-                    sizeof(xen_version->capabilities));
+    rc = xc_version(xch, XENVER_compile_info,
+                    &xen_version->compile_info);
     if ( rc < 0 )
         return rc;
 
-    rc = xc_version(xch, XEN_VERSION_changeset, xen_version->changeset,
-                    sizeof(xen_version->changeset));
+    rc = xc_version(xch,
+                    XENVER_capabilities, &xen_version->capabilities);
     if ( rc < 0 )
         return rc;
 
-    rc = xc_version(xch, XEN_VERSION_platform_parameters,
-                    &xen_version->platform_parameters,
-                    sizeof(xen_version->platform_parameters));
+    rc = xc_version(xch, XENVER_changeset, &xen_version->changeset);
     if ( rc < 0 )
         return rc;
 
-    val = 0;
-    rc = xc_version(xch, XEN_VERSION_pagesize, &val, sizeof(val));
+    rc = xc_version(xch, XENVER_platform_parameters,
+                    &xen_version->platform_parameters);
     if ( rc < 0 )
         return rc;
-    xen_version->pagesize = val;
+
+    rc = xc_version(xch, XENVER_pagesize, NULL);
+    if ( rc < 0 )
+        return rc;
+    xen_version->pagesize = rc;
 
     return 0;
 }
diff --git a/tools/libxc/xc_dom_boot.c b/tools/libxc/xc_dom_boot.c
index bbff72e..791041b 100644
--- a/tools/libxc/xc_dom_boot.c
+++ b/tools/libxc/xc_dom_boot.c
@@ -112,19 +112,11 @@ int xc_dom_compat_check(struct xc_dom_image *dom)
 
 int xc_dom_boot_xen_init(struct xc_dom_image *dom, xc_interface *xch, domid_t 
domid)
 {
-    xen_version_op_val_t val = 0;
-
-    if ( xc_version(xch, XEN_VERSION_version, &val, sizeof(val)) < 0 )
-    {
-        xc_dom_panic(xch, XC_INTERNAL_ERROR, "can't get Xen version!");
-        return -1;
-    }
-    dom->xen_version = val;
     dom->xch = xch;
     dom->guest_domid = domid;
 
-    if ( xc_version(xch, XEN_VERSION_capabilities, dom->xen_caps,
-                    sizeof(dom->xen_caps)) < 0 )
+    dom->xen_version = xc_version(xch, XENVER_version, NULL);
+    if ( xc_version(xch, XENVER_capabilities, &dom->xen_caps) < 0 )
     {
         xc_dom_panic(xch, XC_INTERNAL_ERROR, "can't get xen capabilities");
         return -1;
diff --git a/tools/libxc/xc_domain.c b/tools/libxc/xc_domain.c
index 9ebd1d6..050216e 100644
--- a/tools/libxc/xc_domain.c
+++ b/tools/libxc/xc_domain.c
@@ -2084,8 +2084,7 @@ int xc_map_domain_meminfo(xc_interface *xch, int domid,
     _di.guest_width = minfo->guest_width;
 
     /* Get page table levels (see get_platform_info() in xg_save_restore.h */
-    if ( xc_version(xch, XEN_VERSION_capabilities, xen_caps,
-                    sizeof(xen_caps)) < 0 )
+    if ( xc_version(xch, XENVER_capabilities, &xen_caps) )
     {
         PERROR("Could not get Xen capabilities (for page table levels)");
         return -1;
diff --git a/tools/libxc/xc_private.c b/tools/libxc/xc_private.c
index 631ad91..c41e433 100644
--- a/tools/libxc/xc_private.c
+++ b/tools/libxc/xc_private.c
@@ -457,23 +457,58 @@ int xc_sysctl(xc_interface *xch, struct xen_sysctl 
*sysctl)
     return do_sysctl(xch, sysctl);
 }
 
-ssize_t xc_version_len(xc_interface *xch, unsigned int cmd)
+int xc_version(xc_interface *xch, int cmd, void *arg)
 {
-    return do_version_op(xch, cmd, NULL, 0);
-}
-
-int xc_version(xc_interface *xch, unsigned int cmd, void *arg, size_t sz)
-{
-    DECLARE_HYPERCALL_BOUNCE(arg, sz, XC_HYPERCALL_BUFFER_BOUNCE_OUT);
+    DECLARE_HYPERCALL_BOUNCE(arg, 0, XC_HYPERCALL_BUFFER_BOUNCE_OUT); /* Size 
unknown until cmd decoded */
+    size_t sz;
     int rc;
 
-    if ( xc_hypercall_bounce_pre(xch, arg) )
+    switch ( cmd )
+    {
+    case XENVER_version:
+        sz = 0;
+        break;
+    case XENVER_extraversion:
+        sz = sizeof(xen_extraversion_t);
+        break;
+    case XENVER_compile_info:
+        sz = sizeof(xen_compile_info_t);
+        break;
+    case XENVER_capabilities:
+        sz = sizeof(xen_capabilities_info_t);
+        break;
+    case XENVER_changeset:
+        sz = sizeof(xen_changeset_info_t);
+        break;
+    case XENVER_platform_parameters:
+        sz = sizeof(xen_platform_parameters_t);
+        break;
+    case XENVER_get_features:
+        sz = sizeof(xen_feature_info_t);
+        break;
+    case XENVER_pagesize:
+        sz = 0;
+        break;
+    case XENVER_guest_handle:
+        sz = sizeof(xen_domain_handle_t);
+        break;
+    case XENVER_commandline:
+        sz = sizeof(xen_commandline_t);
+        break;
+    default:
+        ERROR("xc_version: unknown command %d\n", cmd);
+        return -EINVAL;
+    }
+
+    HYPERCALL_BOUNCE_SET_SIZE(arg, sz);
+
+    if ( (sz != 0) && xc_hypercall_bounce_pre(xch, arg) )
     {
         PERROR("Could not bounce buffer for version hypercall");
         return -ENOMEM;
     }
 
-    rc = do_version_op(xch, cmd, HYPERCALL_BUFFER(arg), sz);
+    rc = do_xen_version(xch, cmd, HYPERCALL_BUFFER(arg));
 
     if ( sz != 0 )
         xc_hypercall_bounce_post(xch, arg);
diff --git a/tools/libxc/xc_private.h b/tools/libxc/xc_private.h
index 5be8fdd..aa8daf1 100644
--- a/tools/libxc/xc_private.h
+++ b/tools/libxc/xc_private.h
@@ -214,12 +214,11 @@ void xc__hypercall_buffer_cache_release(xc_interface 
*xch);
  * Hypercall interfaces.
  */
 
-static inline long do_version_op(xc_interface *xch, int cmd,
-                                 xc_hypercall_buffer_t *dest, ssize_t len)
+static inline int do_xen_version(xc_interface *xch, int cmd, 
xc_hypercall_buffer_t *dest)
 {
     DECLARE_HYPERCALL_BUFFER_ARGUMENT(dest);
-    return xencall3(xch->xcall, __HYPERVISOR_version_op,
-                    cmd, HYPERCALL_BUFFER_AS_ARG(dest), len);
+    return xencall2(xch->xcall, __HYPERVISOR_xen_version,
+                    cmd, HYPERCALL_BUFFER_AS_ARG(dest));
 }
 
 static inline int do_physdev_op(xc_interface *xch, int cmd, void *op, size_t 
len)
diff --git a/tools/libxc/xc_resume.c b/tools/libxc/xc_resume.c
index 2b6c308..c169204 100644
--- a/tools/libxc/xc_resume.c
+++ b/tools/libxc/xc_resume.c
@@ -56,8 +56,7 @@ static int modify_returncode(xc_interface *xch, uint32_t 
domid)
             return 0;
 
         /* HVM guests have host address width. */
-        if ( xc_version(xch, XEN_VERSION_capabilities, caps,
-                        sizeof(caps)) < 0 )
+        if ( xc_version(xch, XENVER_capabilities, &caps) != 0 )
         {
             PERROR("Could not get Xen capabilities");
             return -1;
diff --git a/tools/libxc/xc_sr_save.c b/tools/libxc/xc_sr_save.c
index 291fe9f..f98c827 100644
--- a/tools/libxc/xc_sr_save.c
+++ b/tools/libxc/xc_sr_save.c
@@ -9,7 +9,7 @@
 static int write_headers(struct xc_sr_context *ctx, uint16_t guest_type)
 {
     xc_interface *xch = ctx->xch;
-    xen_version_op_val_t xen_version;
+    int32_t xen_version = xc_version(xch, XENVER_version, NULL);
     struct xc_sr_ihdr ihdr =
         {
             .marker  = IHDR_MARKER,
@@ -21,16 +21,15 @@ static int write_headers(struct xc_sr_context *ctx, 
uint16_t guest_type)
         {
             .type       = guest_type,
             .page_shift = XC_PAGE_SHIFT,
+            .xen_major  = (xen_version >> 16) & 0xffff,
+            .xen_minor  = (xen_version)       & 0xffff,
         };
 
-    if ( xc_version(xch, XEN_VERSION_version, &xen_version,
-                    sizeof(xen_version)) < 0 )
+    if ( xen_version < 0 )
     {
         PERROR("Unable to obtain Xen Version");
         return -1;
     }
-    dhdr.xen_major = (xen_version >> 16) & 0xffff;
-    dhdr.xen_minor = (xen_version)       & 0xffff;
 
     if ( write_exact(ctx->fd, &ihdr, sizeof(ihdr)) )
     {
diff --git a/tools/libxc/xg_save_restore.h b/tools/libxc/xg_save_restore.h
index 007875f..303081d 100644
--- a/tools/libxc/xg_save_restore.h
+++ b/tools/libxc/xg_save_restore.h
@@ -57,12 +57,10 @@ static inline int get_platform_info(xc_interface *xch, 
uint32_t dom,
     xen_capabilities_info_t xen_caps = "";
     xen_platform_parameters_t xen_params;
 
-    if (xc_version(xch, XEN_VERSION_platform_parameters, &xen_params,
-                   sizeof(xen_params)) < 0)
+    if (xc_version(xch, XENVER_platform_parameters, &xen_params) != 0)
         return 0;
 
-    if (xc_version(xch, XEN_VERSION_capabilities, xen_caps,
-                   sizeof(xen_caps)) < 0)
+    if (xc_version(xch, XENVER_capabilities, &xen_caps) != 0)
         return 0;
 
     if (xc_maximum_ram_page(xch, max_mfn))
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index d232473..eec899d 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -5353,71 +5353,50 @@ libxl_numainfo *libxl_get_numainfo(libxl_ctx *ctx, int 
*nr)
     return ret;
 }
 
-
-static int libxl__xc_version_wrapper(libxl__gc *gc, unsigned int cmd,
-                                     char *buf, ssize_t len, char **dst)
-{
-    int r;
-
-    r = xc_version(CTX->xch, cmd, buf, len);
-    if ( r == -EPERM ) {
-        buf[0] = '\0';
-    } else if ( r < 0 ) {
-        return r;
-    }
-    *dst = libxl__strdup(NOGC, buf);
-    return 0;
-}
-
 const libxl_version_info* libxl_get_version_info(libxl_ctx *ctx)
 {
     GC_INIT(ctx);
-    char *buf;
-    xen_version_op_val_t val = 0;
+    union {
+        xen_extraversion_t xen_extra;
+        xen_compile_info_t xen_cc;
+        xen_changeset_info_t xen_chgset;
+        xen_capabilities_info_t xen_caps;
+        xen_platform_parameters_t p_parms;
+        xen_commandline_t xen_commandline;
+    } u;
+    long xen_version;
     libxl_version_info *info = &ctx->version_info;
 
     if (info->xen_version_extra != NULL)
         goto out;
 
-    if (xc_version(CTX->xch, XEN_VERSION_pagesize, &val, sizeof(val)) < 0)
-        goto out;
+    xen_version = xc_version(ctx->xch, XENVER_version, NULL);
+    info->xen_version_major = xen_version >> 16;
+    info->xen_version_minor = xen_version & 0xFF;
 
-    info->pagesize = val;
-    /* 4K buffer. */
-    buf = libxl__zalloc(gc, info->pagesize);
+    xc_version(ctx->xch, XENVER_extraversion, &u.xen_extra);
+    info->xen_version_extra = libxl__strdup(NOGC, u.xen_extra);
 
-    val = 0;
-    if (xc_version(CTX->xch, XEN_VERSION_version, &val, sizeof(val)) < 0)
-        goto out;
-    info->xen_version_major = val >> 16;
-    info->xen_version_minor = val & 0xFF;
+    xc_version(ctx->xch, XENVER_compile_info, &u.xen_cc);
+    info->compiler = libxl__strdup(NOGC, u.xen_cc.compiler);
+    info->compile_by = libxl__strdup(NOGC, u.xen_cc.compile_by);
+    info->compile_domain = libxl__strdup(NOGC, u.xen_cc.compile_domain);
+    info->compile_date = libxl__strdup(NOGC, u.xen_cc.compile_date);
 
-    if (libxl__xc_version_wrapper(gc, XEN_VERSION_extraversion, buf,
-                                  info->pagesize, &info->xen_version_extra) < 
0)
-        goto out;
+    xc_version(ctx->xch, XENVER_capabilities, &u.xen_caps);
+    info->capabilities = libxl__strdup(NOGC, u.xen_caps);
 
-    info->compiler = libxl__strdup(NOGC, "");
-    info->compile_by = libxl__strdup(NOGC, "");
-    info->compile_domain = libxl__strdup(NOGC, "");
-    info->compile_date = libxl__strdup(NOGC, "");
+    xc_version(ctx->xch, XENVER_changeset, &u.xen_chgset);
+    info->changeset = libxl__strdup(NOGC, u.xen_chgset);
 
-    if (libxl__xc_version_wrapper(gc, XEN_VERSION_capabilities, buf,
-                                  info->pagesize, &info->capabilities) < 0)
-        goto out;
+    xc_version(ctx->xch, XENVER_platform_parameters, &u.p_parms);
+    info->virt_start = u.p_parms.virt_start;
 
-    if (libxl__xc_version_wrapper(gc, XEN_VERSION_changeset, buf,
-                                  info->pagesize, &info->changeset) < 0)
-        goto out;
-
-    val = 0;
-    if (xc_version(CTX->xch, XEN_VERSION_platform_parameters, &val,
-                   sizeof(val)) < 0)
-        goto out;
+    info->pagesize = xc_version(ctx->xch, XENVER_pagesize, NULL);
 
-    info->virt_start = val;
+    xc_version(ctx->xch, XENVER_commandline, &u.xen_commandline);
+    info->commandline = libxl__strdup(NOGC, u.xen_commandline);
 
-    (void)libxl__xc_version_wrapper(gc, XEN_VERSION_commandline, buf,
-                                    info->pagesize, &info->commandline);
  out:
     GC_FREE;
     return info;
diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c 
b/tools/ocaml/libs/xc/xenctrl_stubs.c
index 22741d5..5477df3 100644
--- a/tools/ocaml/libs/xc/xenctrl_stubs.c
+++ b/tools/ocaml/libs/xc/xenctrl_stubs.c
@@ -853,21 +853,21 @@ CAMLprim value stub_xc_version_version(value xch)
        CAMLparam1(xch);
        CAMLlocal1(result);
        xen_extraversion_t extra;
-       xen_version_op_val_t packed;
+       long packed;
        int retval;
 
        caml_enter_blocking_section();
-       retval = xc_version(_H(xch), XEN_VERSION_version, &packed, 
sizeof(packed));
+       packed = xc_version(_H(xch), XENVER_version, NULL);
        caml_leave_blocking_section();
 
-       if (retval < 0)
+       if (packed < 0)
                failwith_xc(_H(xch));
 
        caml_enter_blocking_section();
-       retval = xc_version(_H(xch), XEN_VERSION_extraversion, &extra, 
sizeof(extra));
+       retval = xc_version(_H(xch), XENVER_extraversion, &extra);
        caml_leave_blocking_section();
 
-       if (retval < 0)
+       if (retval)
                failwith_xc(_H(xch));
 
        result = caml_alloc_tuple(3);
@@ -884,28 +884,37 @@ CAMLprim value stub_xc_version_compile_info(value xch)
 {
        CAMLparam1(xch);
        CAMLlocal1(result);
+       xen_compile_info_t ci;
+       int retval;
+
+       caml_enter_blocking_section();
+       retval = xc_version(_H(xch), XENVER_compile_info, &ci);
+       caml_leave_blocking_section();
+
+       if (retval)
+               failwith_xc(_H(xch));
 
        result = caml_alloc_tuple(4);
 
-       Store_field(result, 0, caml_copy_string(""));
-       Store_field(result, 1, caml_copy_string(""));
-       Store_field(result, 2, caml_copy_string(""));
-       Store_field(result, 3, caml_copy_string(""));
+       Store_field(result, 0, caml_copy_string(ci.compiler));
+       Store_field(result, 1, caml_copy_string(ci.compile_by));
+       Store_field(result, 2, caml_copy_string(ci.compile_domain));
+       Store_field(result, 3, caml_copy_string(ci.compile_date));
 
        CAMLreturn(result);
 }
 
 
-static value xc_version_single_string(value xch, int code, void *info, ssize_t 
len)
+static value xc_version_single_string(value xch, int code, void *info)
 {
        CAMLparam1(xch);
        int retval;
 
        caml_enter_blocking_section();
-       retval = xc_version(_H(xch), code, info, len);
+       retval = xc_version(_H(xch), code, info);
        caml_leave_blocking_section();
 
-       if (retval < 0)
+       if (retval)
                failwith_xc(_H(xch));
 
        CAMLreturn(caml_copy_string((char *)info));
@@ -916,8 +925,7 @@ CAMLprim value stub_xc_version_changeset(value xch)
 {
        xen_changeset_info_t ci;
 
-       return xc_version_single_string(xch, XEN_VERSION_changeset,
-                                       &ci, sizeof(ci));
+       return xc_version_single_string(xch, XENVER_changeset, &ci);
 }
 
 
@@ -925,8 +933,7 @@ CAMLprim value stub_xc_version_capabilities(value xch)
 {
        xen_capabilities_info_t ci;
 
-       return xc_version_single_string(xch, XEN_VERSION_capabilities,
-                                       &ci, sizeof(ci));
+       return xc_version_single_string(xch, XENVER_capabilities, &ci);
 }
 
 
diff --git a/tools/python/xen/lowlevel/xc/xc.c 
b/tools/python/xen/lowlevel/xc/xc.c
index 812a905..8411789 100644
--- a/tools/python/xen/lowlevel/xc/xc.c
+++ b/tools/python/xen/lowlevel/xc/xc.c
@@ -1204,40 +1204,34 @@ static PyObject *pyxc_xeninfo(XcObject *self)
     xen_capabilities_info_t xen_caps;
     xen_platform_parameters_t p_parms;
     xen_commandline_t xen_commandline;
-    xen_version_op_val_t xen_version;
-    xen_version_op_val_t xen_pagesize;
+    long xen_version;
+    long xen_pagesize;
     char str[128];
 
-    if ( xc_version(self->xc_handle, XEN_VERSION_version, &xen_version,
-                    sizeof(xen_version)) < 0 )
-        return pyxc_error_to_exception(self->xc_handle);
+    xen_version = xc_version(self->xc_handle, XENVER_version, NULL);
 
-    if ( xc_version(self->xc_handle, XEN_VERSION_extraversion, &xen_extra,
-                    sizeof(xen_extra)) < 0 )
+    if ( xc_version(self->xc_handle, XENVER_extraversion, &xen_extra) != 0 )
         return pyxc_error_to_exception(self->xc_handle);
 
-    memset(&xen_cc, 0, sizeof(xen_cc));
+    if ( xc_version(self->xc_handle, XENVER_compile_info, &xen_cc) != 0 )
+        return pyxc_error_to_exception(self->xc_handle);
 
-    if ( xc_version(self->xc_handle, XEN_VERSION_changeset, &xen_chgset,
-                    sizeof(xen_chgset)) < 0 )
+    if ( xc_version(self->xc_handle, XENVER_changeset, &xen_chgset) != 0 )
         return pyxc_error_to_exception(self->xc_handle);
 
-    if ( xc_version(self->xc_handle, XEN_VERSION_capabilities, &xen_caps,
-                    sizeof(xen_caps)) < 0 )
+    if ( xc_version(self->xc_handle, XENVER_capabilities, &xen_caps) != 0 )
         return pyxc_error_to_exception(self->xc_handle);
 
-    if ( xc_version(self->xc_handle, XEN_VERSION_platform_parameters,
-                    &p_parms, sizeof(p_parms)) < 0 )
+    if ( xc_version(self->xc_handle, XENVER_platform_parameters, &p_parms) != 
0 )
         return pyxc_error_to_exception(self->xc_handle);
 
-    if ( xc_version(self->xc_handle, XEN_VERSION_commandline,
-                    &xen_commandline, sizeof(xen_commandline)) < 0 )
+    if ( xc_version(self->xc_handle, XENVER_commandline, &xen_commandline) != 
0 )
         return pyxc_error_to_exception(self->xc_handle);
 
     snprintf(str, sizeof(str), "virt_start=0x%"PRI_xen_ulong, 
p_parms.virt_start);
 
-    if ( xc_version(self->xc_handle, XEN_VERSION_pagesize, &xen_pagesize,
-                    sizeof(xen_pagesize)) < 0 )
+    xen_pagesize = xc_version(self->xc_handle, XENVER_pagesize, NULL);
+    if (xen_pagesize < 0 )
         return pyxc_error_to_exception(self->xc_handle);
 
     return Py_BuildValue("{s:i,s:i,s:s,s:s,s:i,s:s,s:s,s:s,s:s,s:s,s:s,s:s}",
diff --git a/tools/xenstat/libxenstat/src/xenstat.c 
b/tools/xenstat/libxenstat/src/xenstat.c
index efb68b5..3495f3f 100644
--- a/tools/xenstat/libxenstat/src/xenstat.c
+++ b/tools/xenstat/libxenstat/src/xenstat.c
@@ -621,18 +621,20 @@ unsigned long long xenstat_network_tdrop(xenstat_network 
* network)
 /* Collect Xen version information */
 static int xenstat_collect_xen_version(xenstat_node * node)
 {
-       xen_version_op_val_t vnum = 0;
+       long vnum = 0;
        xen_extraversion_t version;
 
        /* Collect Xen version information if not already collected */
        if (node->handle->xen_version[0] == '\0') {
                /* Get the Xen version number and extraversion string */
-               if (xc_version(node->handle->xc_handle,
-                              XEN_VERSION_version, &vnum, sizeof(vnum)) < 0)
+               vnum = xc_version(node->handle->xc_handle,
+                       XENVER_version, NULL);
+
+               if (vnum < 0)
                        return 0;
 
-               if (xc_version(node->handle->xc_handle, 
XEN_VERSION_extraversion,
-                              &version, sizeof(version)) < 0)
+               if (xc_version(node->handle->xc_handle, XENVER_extraversion,
+                       &version) < 0)
                        return 0;
                /* Format the version information as a string and store it */
                snprintf(node->handle->xen_version, VERSION_SIZE, "%ld.%ld%s",
diff --git a/tools/xentrace/xenctx.c b/tools/xentrace/xenctx.c
index cd280fc..e647179 100644
--- a/tools/xentrace/xenctx.c
+++ b/tools/xentrace/xenctx.c
@@ -1000,8 +1000,7 @@ static void dump_ctx(int vcpu)
             guest_word_size = (cpuctx.msr_efer & 0x400) ? 8 :
                 guest_protected_mode ? 4 : 2;
             /* HVM guest context records are always host-sized */
-            if (xc_version(xenctx.xc_handle, XEN_VERSION_capabilities,
-                           &xen_caps, sizeof(xen_caps)) < 0) {
+            if (xc_version(xenctx.xc_handle, XENVER_capabilities, &xen_caps) 
!= 0) {
                 perror("xc_version");
                 return;
             }
-- 
2.5.0


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.