From 9a649d693aef7128acacd4c25799df21036fea46 Mon Sep 17 00:00:00 2001 From: Juergen Gross Date: Tue, 29 Mar 2016 07:29:19 +0200 Subject: [PATCH] libxl: add service function to check whether device model is running Add an internal service function to check for a running device model. This can be used later when adding devices to a domain requiring a device model for either printing an error message or starting the device model in case it is not already running. Signed-off-by: Juergen Gross Acked-by: Wei Liu --- tools/libxl/libxl.c | 4 +--- tools/libxl/libxl_dm.c | 10 ++++++++++ tools/libxl/libxl_internal.h | 1 + 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 75f00beeae..1ac7848677 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -1552,7 +1552,6 @@ void libxl__destroy_domid(libxl__egc *egc, libxl__destroy_domid_state *dis) libxl_ctx *ctx = CTX; uint32_t domid = dis->domid; char *dom_path; - char *pid; int rc, dm_present; libxl__ev_child_init(&dis->destroyer); @@ -1575,8 +1574,7 @@ void libxl__destroy_domid(libxl__egc *egc, libxl__destroy_domid_state *dis) } /* fall through */ case LIBXL_DOMAIN_TYPE_PV: - pid = libxl__xs_read(gc, XBT_NULL, GCSPRINTF("/local/domain/%d/image/device-model-pid", domid)); - dm_present = (pid != NULL); + dm_present = libxl__dm_active(gc, domid); break; case LIBXL_DOMAIN_TYPE_INVALID: rc = ERROR_FAIL; diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index a45b2c0ca9..bc043fe9fc 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -2377,6 +2377,16 @@ out: return ret; } +int libxl__dm_active(libxl__gc *gc, uint32_t domid) +{ + char *pid, *path; + + path = GCSPRINTF("/local/domain/%d/image/device-model-pid", domid); + pid = libxl__xs_read(gc, XBT_NULL, path); + + return pid != NULL; +} + /* * Local variables: * mode: C diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 770f129c24..eaa150d5ea 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -1625,6 +1625,7 @@ _hidden bool libxl__query_qemu_backend(libxl__gc *gc, uint32_t backend_id, const char *type, bool def); +_hidden int libxl__dm_active(libxl__gc *gc, uint32_t domid); /* * This function will fix reserved device memory conflict -- 2.30.2