[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 COLOPre 03/26] tools/libxl: move domain resume code into libxl_dom_suspend.c
move domain resume code into libxl_dom_suspend.c. pure code motion except for making libxl__domain_resume_device_model() static. Signed-off-by: Yang Hongyang <yanghy@xxxxxxxxxxxxxx> CC: Ian Campbell <Ian.Campbell@xxxxxxxxxx> CC: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> CC: Wei Liu <wei.liu2@xxxxxxxxxx> --- tools/libxl/libxl.c | 33 ------------------------- tools/libxl/libxl_dom.c | 20 --------------- tools/libxl/libxl_dom_suspend.c | 55 +++++++++++++++++++++++++++++++++++++++++ tools/libxl/libxl_internal.h | 1 - 4 files changed, 55 insertions(+), 54 deletions(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 5a70062..1f52bf0 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -510,39 +510,6 @@ int libxl_domain_rename(libxl_ctx *ctx, uint32_t domid, return rc; } -int libxl__domain_resume(libxl__gc *gc, uint32_t domid, int suspend_cancel) -{ - int rc = 0; - - if (xc_domain_resume(CTX->xch, domid, suspend_cancel)) { - LOGE(ERROR, "xc_domain_resume failed for domain %u", domid); - rc = ERROR_FAIL; - goto out; - } - - libxl_domain_type type = libxl__domain_type(gc, domid); - if (type == LIBXL_DOMAIN_TYPE_INVALID) { - rc = ERROR_FAIL; - goto out; - } - - if (type == LIBXL_DOMAIN_TYPE_HVM) { - rc = libxl__domain_resume_device_model(gc, domid); - if (rc) { - LOG(ERROR, "failed to resume device model for domain %u:%d", - domid, rc); - goto out; - } - } - - if (!xs_resume_domain(CTX->xsh, domid)) { - LOGE(ERROR, "xs_resume_domain failed for domain %u", domid); - rc = ERROR_FAIL; - } -out: - return rc; -} - int libxl_domain_resume(libxl_ctx *ctx, uint32_t domid, int suspend_cancel, const libxl_asyncop_how *ao_how) { diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index 3b02562..f457f72 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -1326,26 +1326,6 @@ static void switch_logdirty_done(libxl__egc *egc, libxl__xc_domain_saverestore_async_callback_done(egc, &dss->shs, broke); } -int libxl__domain_resume_device_model(libxl__gc *gc, uint32_t domid) -{ - - switch (libxl__device_model_version_running(gc, domid)) { - case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL: { - libxl__qemu_traditional_cmd(gc, domid, "continue"); - libxl__wait_for_device_model_deprecated(gc, domid, "running", NULL, NULL, NULL); - break; - } - case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN: - if (libxl__qmp_resume(gc, domid)) - return ERROR_FAIL; - break; - default: - return ERROR_INVAL; - } - - return 0; -} - static inline char *physmap_path(libxl__gc *gc, uint32_t dm_domid, uint32_t domid, char *phys_offset, char *node) diff --git a/tools/libxl/libxl_dom_suspend.c b/tools/libxl/libxl_dom_suspend.c index 4edf936..5f1f4fd 100644 --- a/tools/libxl/libxl_dom_suspend.c +++ b/tools/libxl/libxl_dom_suspend.c @@ -372,6 +372,61 @@ static void domain_suspend_callback_common_done(libxl__egc *egc, { libxl__xc_domain_saverestore_async_callback_done(egc, &dss->shs, ok); } + +/*======================= Domain resume ========================*/ + +static int libxl__domain_resume_device_model(libxl__gc *gc, uint32_t domid) +{ + + switch (libxl__device_model_version_running(gc, domid)) { + case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL: { + libxl__qemu_traditional_cmd(gc, domid, "continue"); + libxl__wait_for_device_model_deprecated(gc, domid, "running", NULL, NULL, NULL); + break; + } + case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN: + if (libxl__qmp_resume(gc, domid)) + return ERROR_FAIL; + break; + default: + return ERROR_INVAL; + } + + return 0; +} + +int libxl__domain_resume(libxl__gc *gc, uint32_t domid, int suspend_cancel) +{ + int rc = 0; + + if (xc_domain_resume(CTX->xch, domid, suspend_cancel)) { + LOGE(ERROR, "xc_domain_resume failed for domain %u", domid); + rc = ERROR_FAIL; + goto out; + } + + libxl_domain_type type = libxl__domain_type(gc, domid); + if (type == LIBXL_DOMAIN_TYPE_INVALID) { + rc = ERROR_FAIL; + goto out; + } + + if (type == LIBXL_DOMAIN_TYPE_HVM) { + rc = libxl__domain_resume_device_model(gc, domid); + if (rc) { + LOG(ERROR, "failed to resume device model for domain %u:%d", + domid, rc); + goto out; + } + } + + if (!xs_resume_domain(CTX->xsh, domid)) { + LOGE(ERROR, "xs_resume_domain failed for domain %u", domid); + rc = ERROR_FAIL; + } +out: + return rc; +} /* * Local variables: * mode: C diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 54c3cc1..28959fa 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -1027,7 +1027,6 @@ _hidden int libxl__domain_rename(libxl__gc *gc, uint32_t domid, _hidden int libxl__toolstack_restore(uint32_t domid, const uint8_t *buf, uint32_t size, void *data); -_hidden int libxl__domain_resume_device_model(libxl__gc *gc, uint32_t domid); _hidden const char *libxl__userdata_path(libxl__gc *gc, uint32_t domid, const char *userdata_userid, -- 1.9.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |