[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] tools: Introduce a non-truncating xc_xenver_capabilities()
commit 6625d581ec9bcd3816b5060cb60fd157256057ca Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Tue Jan 17 12:39:48 2023 +0000 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Fri Dec 20 22:44:42 2024 +0000 tools: Introduce a non-truncating xc_xenver_capabilities() Update libxl and the ocaml stubs to match. No API/ABI change in either. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Acked-by: Anthony PERARD <anthony.perard@xxxxxxxxxx> Acked-by: Christian Lindig <christian.lindig@xxxxxxxxxx> --- 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 | 18 ++++++++++++++++-- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 879b626614..6ed2ac9db2 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -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); diff --git a/tools/libs/ctrl/xc_version.c b/tools/libs/ctrl/xc_version.c index 2c14474fee..512302a393 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 f91f7271d5..ae6c5e04cd 100644 --- a/tools/libs/light/libxl.c +++ b/tools/libs/light/libxl.c @@ -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); diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c b/tools/ocaml/libs/xc/xenctrl_stubs.c index 1dd12081e9..8d1d66e81d 100644 --- a/tools/ocaml/libs/xc/xenctrl_stubs.c +++ b/tools/ocaml/libs/xc/xenctrl_stubs.c @@ -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); } -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |