# HG changeset patch # User Andres Lagar-Cavilla # Date 1259767910 18000 # Node ID f39b04723026235f08002252427d5082b36ee126 # Parent 4ce3fd759e994f9bb2588492f59346dccd54bd92 Added libxenlight implementation for resume domain. This brings back a cooperative pv domain from the shutdown state after save, enabling checkpointing. Signed-off-by: Andres Lagar-Cavilla diff -r 4ce3fd759e99 -r f39b04723026 libxl.c --- a/libxl.c +++ b/libxl.c @@ -264,6 +264,28 @@ int libxl_domain_restore(struct libxl_ct return 0; } +int libxl_domain_resume(struct libxl_ctx *ctx, uint32_t domid) +{ + if (is_hvm(ctx, domid)) { + XL_LOG(ctx, XL_LOG_DEBUG, "Called domain_resume on " + "non-cooperative hvm domain %u", domid); + return ERROR_NI; + } + if (xc_domain_resume(ctx->xch, domid, 1)) { + XL_LOG_ERRNO(ctx, XL_LOG_ERROR, + "xc_domain_resume failed for domain %u", + domid); + return ERROR_FAIL; + } + if (!xs_resume_domain(ctx->xsh, domid)) { + XL_LOG_ERRNO(ctx, XL_LOG_ERROR, + "xs_resume_domain failed for domain %u", + domid); + return ERROR_FAIL; + } + return 0; +} + struct libxl_dominfo * libxl_domain_list(struct libxl_ctx *ctx, int *nb_domain) { struct libxl_dominfo *ptr; diff -r 4ce3fd759e99 -r f39b04723026 libxl.h --- a/libxl.h +++ b/libxl.h @@ -262,6 +262,7 @@ int libxl_domain_restore(struct libxl_ct libxl_device_model_info *dm_info); int libxl_domain_suspend(struct libxl_ctx *ctx, libxl_domain_suspend_info *info, uint32_t domid, int fd); +int libxl_domain_resume(struct libxl_ctx *ctx, uint32_t domid); int libxl_domain_shutdown(struct libxl_ctx *ctx, uint32_t domid, int req); int libxl_domain_destroy(struct libxl_ctx *ctx, uint32_t domid, int force);