The key is /local/domain/$domid/dm-version.
This come with libxl__device_model_version_running helper function.
Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
---
tools/libxl/libxl_create.c | 5 +++++
tools/libxl/libxl_internal.c | 19 +++++++++++++++++++
tools/libxl/libxl_internal.h | 5 +++++
3 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
index e1e3258..3f33d90 100644
--- a/tools/libxl/libxl_create.c
+++ b/tools/libxl/libxl_create.c
@@ -175,6 +175,11 @@ int libxl__domain_build(libxl__gc *gc,
gettimeofday(&start_time, NULL);
+ localents = libxl__calloc(gc, 3, sizeof (char *));
+ i = 0;
+ localents[i++] = "dm-version";
+ localents[i++] = libxl__strdup(gc,
libxl_device_model_version_to_string(dm_info->device_model_version));
+
switch (info->type) {
case LIBXL_DOMAIN_TYPE_HVM:
ret = libxl__build_hvm(gc, domid, info, dm_info, state);
diff --git a/tools/libxl/libxl_internal.c b/tools/libxl/libxl_internal.c
index 3b8a41f..e535c0c 100644
--- a/tools/libxl/libxl_internal.c
+++ b/tools/libxl/libxl_internal.c
@@ -318,3 +318,22 @@ int libxl__fd_set_cloexec(int fd)
}
return fcntl(fd, F_SETFD, flags | FD_CLOEXEC);
}
+
+libxl_device_model_version libxl__device_model_version_running(libxl__gc *gc,
+ uint32_t domid)
+{
+ char *path = NULL;
+ char *dm_version = NULL;
+ libxl_device_model_version value;
+
+ path = libxl__sprintf(gc, "/local/domain/%d/dm-version", domid);
+ dm_version = libxl__xs_read(gc, XBT_NULL, path);
+ if (!dm_version) {
+ return LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL;
+ }
+
+ if (libxl_device_model_version_from_string(dm_version, &value) < 0) {
+ return LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL;
+ }
+ return value;
+}
diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
index 935c899..4dd0f91 100644
--- a/tools/libxl/libxl_internal.h
+++ b/tools/libxl/libxl_internal.h
@@ -554,4 +554,9 @@ _hidden void libxl__json_object_free(libxl__gc *gc,
libxl__json_object *obj);
_hidden libxl__json_object *libxl__json_parse(libxl__gc *gc, const char *s);
+ /* Based on /local/domain/$domid/dm-version xenstore key
+ * default is qemu xen traditional */
+_hidden libxl_device_model_version
+libxl__device_model_version_running(libxl__gc *gc, uint32_t domid);
+
#endif
--
Anthony PERARD
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|