From: Juergen Gross Date: Tue, 29 Mar 2016 05:29:19 +0000 (+0200) Subject: libxl: add service function to check whether device model is running X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~1372 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=9a649d693aef7128acacd4c25799df21036fea46;p=xen.git 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 --- 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