diff mbox series

[3/6] tools: Introduce a non-truncating xc_xenver_capabilities()

Message ID 20230117135336.11662-4-andrew.cooper3@citrix.com (mailing list archive)
State New, archived
Headers show
Series tools: Switch to non-truncating XENVER_* ops | expand

Commit Message

Andrew Cooper Jan. 17, 2023, 1:53 p.m. UTC
Update libxl and the ocaml stubs to match.  No API/ABI change in either.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Wei Liu <wl@xen.org>
CC: Anthony PERARD <anthony.perard@citrix.com>
CC: Juergen Gross <jgross@suse.com>
CC: Christian Lindig <christian.lindig@citrix.com>
CC: David Scott <dave@recoil.org>
CC: Edwin Torok <edvin.torok@citrix.com>
CC: Rob Hoes <Rob.Hoes@citrix.com>
---
 tools/include/xenctrl.h             |  1 +
 tools/libs/ctrl/xc_version.c        |  5 +++++
 tools/libs/light/libxl.c            |  4 +---
 tools/ocaml/libs/xc/xenctrl_stubs.c | 17 +++++++++++++++--
 4 files changed, 22 insertions(+), 5 deletions(-)

Comments

Christian Lindig Jan. 18, 2023, 1:34 p.m. UTC | #1
> On 17 Jan 2023, at 13:53, Andrew Cooper <andrew.cooper3@citrix.com> wrote:
> 
> Update libxl and the ocaml stubs to match.  No API/ABI change in either.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Wei Liu <wl@xen.org>
> CC: Anthony PERARD <anthony.perard@citrix.com>
> CC: Juergen Gross <jgross@suse.com>
> CC: Christian Lindig <christian.lindig@citrix.com>
> CC: David Scott <dave@recoil.org>
> CC: Edwin Torok <edvin.torok@citrix.com>
> CC: Rob Hoes <Rob.Hoes@citrix.com>

> ---
> tools/include/xenctrl.h             |  1 +
> tools/libs/ctrl/xc_version.c        |  5 +++++
> tools/libs/light/libxl.c            |  4 +---
> tools/ocaml/libs/xc/xenctrl_stubs.c | 17 +++++++++++++++--
> 4 files changed, 22 insertions(+), 5 deletions(-)

Acked-by: Christian Lindig <christian.lindig@citrix.com>

> 
> diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h
> index 1e88d49371a4..279dc17d67d4 100644
> --- a/tools/include/xenctrl.h
> +++ b/tools/include/xenctrl.h
> @@ -1609,6 +1609,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);
> 
> diff --git a/tools/libs/ctrl/xc_version.c b/tools/libs/ctrl/xc_version.c
> index 2c14474feec5..512302a393ea 100644
> --- a/tools/libs/ctrl/xc_version.c
> +++ b/tools/libs/ctrl/xc_version.c
> @@ -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);
> +}
> diff --git a/tools/libs/light/libxl.c b/tools/libs/light/libxl.c
> index 3e16e568839c..139e838d1407 100644
> --- a/tools/libs/light/libxl.c
> +++ b/tools/libs/light/libxl.c
> @@ -583,7 +583,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;
> @@ -607,8 +606,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);
> diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c b/tools/ocaml/libs/xc/xenctrl_stubs.c
> index f3ce12dd8683..368f4727f0a0 100644
> --- a/tools/ocaml/libs/xc/xenctrl_stubs.c
> +++ b/tools/ocaml/libs/xc/xenctrl_stubs.c
> @@ -1009,9 +1009,22 @@ CAMLprim value stub_xc_version_changeset(value xch)
> 
> CAMLprim value stub_xc_version_capabilities(value xch)
> {
> -	xen_capabilities_info_t ci;
> +	CAMLparam1(xch);
> +	CAMLlocal1(result);
> +	char *capabilities;
> +
> +	caml_enter_blocking_section();
> +	retval = xc_xenver_capabilities(_H(xch));
> +	caml_leave_blocking_section();
> 
> -	return xc_version_single_string(xch, XENVER_capabilities, &ci);
> +	if (!capabilities)
> +		failwith_xc(_H(xch));
> +
> +	result = caml_copy_string(capabilities);
> +
> +	free(capabilities);
> +
> +	CAMLreturn(result);
> }
> 
> 
> -- 
> 2.11.0
>
Anthony PERARD Jan. 30, 2023, 6:07 p.m. UTC | #2
On Tue, Jan 17, 2023 at 01:53:33PM +0000, Andrew Cooper wrote:
> Update libxl and the ocaml stubs to match.  No API/ABI change in either.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>

Thanks,
diff mbox series

Patch

diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h
index 1e88d49371a4..279dc17d67d4 100644
--- a/tools/include/xenctrl.h
+++ b/tools/include/xenctrl.h
@@ -1609,6 +1609,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);
 
diff --git a/tools/libs/ctrl/xc_version.c b/tools/libs/ctrl/xc_version.c
index 2c14474feec5..512302a393ea 100644
--- a/tools/libs/ctrl/xc_version.c
+++ b/tools/libs/ctrl/xc_version.c
@@ -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);
+}
diff --git a/tools/libs/light/libxl.c b/tools/libs/light/libxl.c
index 3e16e568839c..139e838d1407 100644
--- a/tools/libs/light/libxl.c
+++ b/tools/libs/light/libxl.c
@@ -583,7 +583,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;
@@ -607,8 +606,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);
diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c b/tools/ocaml/libs/xc/xenctrl_stubs.c
index f3ce12dd8683..368f4727f0a0 100644
--- a/tools/ocaml/libs/xc/xenctrl_stubs.c
+++ b/tools/ocaml/libs/xc/xenctrl_stubs.c
@@ -1009,9 +1009,22 @@  CAMLprim value stub_xc_version_changeset(value xch)
 
 CAMLprim value stub_xc_version_capabilities(value xch)
 {
-	xen_capabilities_info_t ci;
+	CAMLparam1(xch);
+	CAMLlocal1(result);
+	char *capabilities;
+
+	caml_enter_blocking_section();
+	retval = xc_xenver_capabilities(_H(xch));
+	caml_leave_blocking_section();
 
-	return xc_version_single_string(xch, XENVER_capabilities, &ci);
+	if (!capabilities)
+		failwith_xc(_H(xch));
+
+	result = caml_copy_string(capabilities);
+
+	free(capabilities);
+
+	CAMLreturn(result);
 }