[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] Add resumedomain domctl to resume a domain after checkpoint.



# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1169220221 0
# Node ID dcb145f858e32a1d310a5558d4e12bb0521a625d
# Parent  9a0b157a0ab0f0472dcfd08be69a5e16edf4143d
Add resumedomain domctl to resume a domain after checkpoint.
Export resumedomain domctl to libxc, xend.

Signed-off-by: Brendan Cully <brendan@xxxxxxxxx>
---
 tools/libxc/xc_domain.c                 |   10 ++++++++++
 tools/libxc/xenctrl.h                   |   12 ++++++++++++
 tools/python/xen/lowlevel/xc/xc.c       |   11 +++++++++++
 tools/python/xen/xend/XendDomainInfo.py |    9 +++++++++
 xen/common/domctl.c                     |   17 +++++++++++++++++
 xen/include/public/domctl.h             |    1 +
 6 files changed, 60 insertions(+)

diff -r 9a0b157a0ab0 -r dcb145f858e3 tools/libxc/xc_domain.c
--- a/tools/libxc/xc_domain.c   Fri Jan 19 15:11:44 2007 +0000
+++ b/tools/libxc/xc_domain.c   Fri Jan 19 15:23:41 2007 +0000
@@ -86,6 +86,16 @@ int xc_domain_shutdown(int xc_handle,
 
  out1:
     return ret;
+}
+
+
+int xc_domain_resume(int xc_handle,
+                      uint32_t domid)
+{
+    DECLARE_DOMCTL;
+    domctl.cmd = XEN_DOMCTL_resumedomain;
+    domctl.domain = (domid_t)domid;
+    return do_domctl(xc_handle, &domctl);
 }
 
 
diff -r 9a0b157a0ab0 -r dcb145f858e3 tools/libxc/xenctrl.h
--- a/tools/libxc/xenctrl.h     Fri Jan 19 15:11:44 2007 +0000
+++ b/tools/libxc/xenctrl.h     Fri Jan 19 15:23:41 2007 +0000
@@ -236,6 +236,18 @@ int xc_domain_destroy(int xc_handle,
 int xc_domain_destroy(int xc_handle,
                       uint32_t domid);
 
+
+/**
+ * This function resumes a suspended domain. The domain should have
+ * been previously suspended.
+ *
+ * @parm xc_handle a handle to an open hypervisor interface
+ * @parm domid the domain id to resume
+ * return 0 on success, -1 on failure
+ */
+int xc_domain_resume(int xc_handle,
+                      uint32_t domid);
+
 /**
  * This function will shutdown a domain. This is intended for use in
  * fully-virtualized domains where this operation is analogous to the
diff -r 9a0b157a0ab0 -r dcb145f858e3 tools/python/xen/lowlevel/xc/xc.c
--- a/tools/python/xen/lowlevel/xc/xc.c Fri Jan 19 15:11:44 2007 +0000
+++ b/tools/python/xen/lowlevel/xc/xc.c Fri Jan 19 15:23:41 2007 +0000
@@ -174,6 +174,10 @@ static PyObject *pyxc_domain_shutdown(Xc
     return zero;
 }
 
+static PyObject *pyxc_domain_resume(XcObject *self, PyObject *args)
+{
+    return dom_op(self, args, xc_domain_resume);
+}
 
 static PyObject *pyxc_vcpu_setaffinity(XcObject *self,
                                        PyObject *args,
@@ -1041,6 +1045,13 @@ static PyMethodDef pyxc_methods[] = {
       METH_VARARGS, "\n"
       "Destroy a domain.\n"
       " dom [int]:    Identifier of domain to be destroyed.\n\n"
+      "Returns: [int] 0 on success; -1 on error.\n" },
+    
+    { "domain_resume", 
+      (PyCFunction)pyxc_domain_resume, 
+      METH_VARARGS, "\n"
+      "Resume execution of a suspended domain.\n"
+      " dom [int]: Identifier of domain to be resumed.\n\n"
       "Returns: [int] 0 on success; -1 on error.\n" },
 
     { "domain_shutdown", 
diff -r 9a0b157a0ab0 -r dcb145f858e3 tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py   Fri Jan 19 15:11:44 2007 +0000
+++ b/tools/python/xen/xend/XendDomainInfo.py   Fri Jan 19 15:23:41 2007 +0000
@@ -1539,6 +1539,15 @@ class XendDomainInfo:
         self.cleanupDomain()
 
 
+    def resumeDomain(self):
+        log.debug("XendDomainInfo.resumeDomain(%s)", str(self.domid))
+
+        try:
+            if self.domid is not None:
+                xc.domain_resume(self.domid)
+        except:
+            log.exception("XendDomainInfo.resume: xc.domain_resume failed on 
domain %s." % (str(self.domid)))
+
     #
     # Channels for xenstore and console
     # 
diff -r 9a0b157a0ab0 -r dcb145f858e3 xen/common/domctl.c
--- a/xen/common/domctl.c       Fri Jan 19 15:11:44 2007 +0000
+++ b/xen/common/domctl.c       Fri Jan 19 15:23:41 2007 +0000
@@ -286,6 +286,23 @@ ret_t do_domctl(XEN_GUEST_HANDLE(xen_dom
     }
     break;
 
+    case XEN_DOMCTL_resumedomain:
+    {
+        struct domain *d = find_domain_by_id(op->domain);
+        struct vcpu *v;
+
+        ret = -ESRCH;
+        if ( d != NULL )
+        {
+            ret = 0;
+            if ( test_and_clear_bit(_DOMF_shutdown, &d->domain_flags) )
+                for_each_vcpu ( d, v )
+                    vcpu_wake(v);
+            put_domain(d);
+        }
+    }
+    break;
+
     case XEN_DOMCTL_createdomain:
     {
         struct domain *d;
diff -r 9a0b157a0ab0 -r dcb145f858e3 xen/include/public/domctl.h
--- a/xen/include/public/domctl.h       Fri Jan 19 15:11:44 2007 +0000
+++ b/xen/include/public/domctl.h       Fri Jan 19 15:23:41 2007 +0000
@@ -63,6 +63,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_creat
 #define XEN_DOMCTL_destroydomain      2
 #define XEN_DOMCTL_pausedomain        3
 #define XEN_DOMCTL_unpausedomain      4
+#define XEN_DOMCTL_resumedomain      27
 
 #define XEN_DOMCTL_getdomaininfo      5
 struct xen_domctl_getdomaininfo {

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.