libxenlight: domain resume
authorKeir Fraser <keir.fraser@citrix.com>
Fri, 4 Dec 2009 07:11:06 +0000 (07:11 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Fri, 4 Dec 2009 07:11:06 +0000 (07:11 +0000)
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 <andres@lagarcavilla.com>
tools/libxl/libxl.c
tools/libxl/libxl.h

index 0f53dda012fad5928b6d341fa92aa77d7d5e3652..7a01dc5df17e225ff1233bd2fee834b370efb603 100644 (file)
@@ -264,6 +264,28 @@ int libxl_domain_restore(struct libxl_ctx *ctx, libxl_domain_build_info *info,
     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;
index 794d1f3384275d0ef67067a1bceb7a7ce611299e..a07918520ff075980ea91f31220a1ec717d6f677 100644 (file)
@@ -262,6 +262,7 @@ int libxl_domain_restore(struct libxl_ctx *ctx, libxl_domain_build_info *info,
                          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);