]> xenbits.xensource.com Git - people/andrewcoop/xen.git/commitdiff
tools: Introduce a non-truncating xc_xenver_capabilities()
authorAndrew Cooper <andrew.cooper3@citrix.com>
Tue, 17 Jan 2023 12:39:48 +0000 (12:39 +0000)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Fri, 20 Dec 2024 22:44:42 +0000 (22:44 +0000)
Update libxl and the ocaml stubs to match.  No API/ABI change in either.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Anthony PERARD <anthony.perard@citrix.com>
Acked-by: Christian Lindig <christian.lindig@citrix.com>
tools/include/xenctrl.h
tools/libs/ctrl/xc_version.c
tools/libs/light/libxl.c
tools/ocaml/libs/xc/xenctrl_stubs.c

index 879b6266141668aba3c63092844992d6cb56720a..6ed2ac9db2de2d3f7fc0c7bd7123c167f1a7164a 100644 (file)
@@ -1578,6 +1578,7 @@ int xc_version(xc_interface *xch, int cmd, void *arg);
  * free().
  */
 char *xc_xenver_extraversion(xc_interface *xch);
+char *xc_xenver_capabilities(xc_interface *xch);
 
 int xc_flask_op(xc_interface *xch, xen_flask_op_t *op);
 
index 2c14474feec51c6a16097b35ffb36333c3534df5..512302a393eaae3ada93088bb539000fe1ed5606 100644 (file)
@@ -156,3 +156,8 @@ char *xc_xenver_extraversion(xc_interface *xch)
 {
     return varbuf_simple_string(xch, XENVER_extraversion2);
 }
+
+char *xc_xenver_capabilities(xc_interface *xch)
+{
+    return varbuf_simple_string(xch, XENVER_capabilities2);
+}
index f91f7271d5bfa3bbb46a23168de96d09d22fc6e7..ae6c5e04cd59c7773c8c60d9d822992598aa27f9 100644 (file)
@@ -584,7 +584,6 @@ const libxl_version_info* libxl_get_version_info(libxl_ctx *ctx)
     union {
         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;
         xen_build_id_t build_id;
@@ -608,8 +607,7 @@ const libxl_version_info* libxl_get_version_info(libxl_ctx *ctx)
     info->compile_domain = libxl__strdup(NOGC, u.xen_cc.compile_domain);
     info->compile_date = libxl__strdup(NOGC, u.xen_cc.compile_date);
 
-    xc_version(ctx->xch, XENVER_capabilities, &u.xen_caps);
-    info->capabilities = libxl__strdup(NOGC, u.xen_caps);
+    info->capabilities = xc_xenver_capabilities(ctx->xch);
 
     xc_version(ctx->xch, XENVER_changeset, &u.xen_chgset);
     info->changeset = libxl__strdup(NOGC, u.xen_chgset);
index 1dd12081e95229ae38f97caf082d81e42deb7cd3..8d1d66e81dea146cbcead28b680848b7719bafbd 100644 (file)
@@ -1067,9 +1067,23 @@ CAMLprim value stub_xc_version_changeset(value xch_val)
 
 CAMLprim value stub_xc_version_capabilities(value xch_val)
 {
-       xen_capabilities_info_t ci;
+       CAMLparam1(xch_val);
+       CAMLlocal1(result);
+       xc_interface *xch = xch_of_val(xch_val);
+       char *capabilities;
+
+       caml_enter_blocking_section();
+       capabilities = xc_xenver_capabilities(xch);
+       caml_leave_blocking_section();
 
-       return xc_version_single_string(xch_val, XENVER_capabilities, &ci);
+       if (!capabilities)
+               failwith_xc(xch);
+
+       result = caml_copy_string(capabilities);
+
+       free(capabilities);
+
+       CAMLreturn(result);
 }