WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] XendDomainInfo.py, xc.c, xc_linux_restore.c, xc_domain.c

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] XendDomainInfo.py, xc.c, xc_linux_restore.c, xc_domain.c, xc.h:
From: BitKeeper Bot <riel@xxxxxxxxxxx>
Date: Fri, 20 May 2005 15:23:48 +0000
Delivery-date: Fri, 20 May 2005 17:02:34 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: Xen Development List <xen-devel@xxxxxxxxxxxxxxxxxxx>
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
ChangeSet 1.1488, 2005/05/20 16:23:48+01:00, cl349@xxxxxxxxxxxxxxxxxxxx

        XendDomainInfo.py, xc.c, xc_linux_restore.c, xc_domain.c, xc.h:
          Split pincpu, setcpuweight, setmaxmem and memory increase reservation
          out of xc_domain_create.  Add glue to get the missing functions 
exposed
          to python and use.
        Signed-off-by: Christian Limpach <Christian.Limpach@xxxxxxxxxxxx>



 libxc/xc.h                        |    7 +-
 libxc/xc_domain.c                 |   51 ++++++++-------------
 libxc/xc_linux_restore.c          |   27 +++++++++--
 python/xen/lowlevel/xc/xc.c       |   89 ++++++++++++++++++++++++++++++--------
 python/xen/xend/XendDomainInfo.py |    8 ++-
 5 files changed, 123 insertions(+), 59 deletions(-)


diff -Nru a/tools/libxc/xc.h b/tools/libxc/xc.h
--- a/tools/libxc/xc.h  2005-05-20 13:03:07 -04:00
+++ b/tools/libxc/xc.h  2005-05-20 13:03:07 -04:00
@@ -124,9 +124,6 @@
 
 typedef dom0_getdomaininfo_t xc_domaininfo_t;
 int xc_domain_create(int xc_handle, 
-                     unsigned int mem_kb, 
-                     int cpu,
-                     float cpu_weight,
                      u32 *pdomid);
 
 
@@ -406,6 +403,10 @@
 int xc_domain_setmaxmem(int xc_handle,
                         u32 domid, 
                         unsigned int max_memkb);
+
+int xc_domain_memory_increase_reservation(int xc_handle,
+                                          u32 domid, 
+                                          unsigned int mem_kb);
 
 typedef dom0_perfc_desc_t xc_perfc_desc_t;
 /* IMPORTANT: The caller is responsible for mlock()'ing the @desc array. */
diff -Nru a/tools/libxc/xc_domain.c b/tools/libxc/xc_domain.c
--- a/tools/libxc/xc_domain.c   2005-05-20 13:03:07 -04:00
+++ b/tools/libxc/xc_domain.c   2005-05-20 13:03:07 -04:00
@@ -9,15 +9,10 @@
 #include "xc_private.h"
 
 int xc_domain_create(int xc_handle,
-                     unsigned int mem_kb, 
-                     int cpu,
-                     float cpu_weight,
                      u32 *pdomid)
 {
-    int err, errno_saved;
+    int err;
     dom0_op_t op;
-    u32 vcpu = 0; /* FIXME, hard coded initial pin to vcpu 0 */
-    cpumap_t cpumap = 1 << cpu;
 
     op.cmd = DOM0_CREATEDOMAIN;
     op.u.createdomain.domain = (domid_t)*pdomid;
@@ -25,33 +20,7 @@
         return err;
 
     *pdomid = (u16)op.u.createdomain.domain;
-
-    if ( (cpu != -1) &&
-         ((err = xc_domain_pincpu(xc_handle, *pdomid, vcpu, &cpumap)) != 0) )
-        goto fail;
-
-    if ( (err = xc_domain_setcpuweight(xc_handle, *pdomid, cpu_weight)) != 0 )
-        goto fail;
-
-    if ( (err = xc_domain_setmaxmem(xc_handle, *pdomid, mem_kb)) != 0 )
-        goto fail;
-
-    if ( (err = do_dom_mem_op(xc_handle, MEMOP_increase_reservation,
-                              NULL, mem_kb/4, 0, *pdomid)) != (mem_kb/4) )
-    {
-        if ( err > 0 )
-            errno = ENOMEM;
-        err = -1;
-        goto fail;
-    }
-
     return 0;
-
- fail:
-    errno_saved = errno;
-    (void)xc_domain_destroy(xc_handle, *pdomid);
-    errno = errno_saved;
-    return err;
 }    
 
 
@@ -255,4 +224,22 @@
     op.u.setdomainmaxmem.domain = (domid_t)domid;
     op.u.setdomainmaxmem.max_memkb = max_memkb;
     return do_dom0_op(xc_handle, &op);
+}
+
+int xc_domain_memory_increase_reservation(int xc_handle,
+                                          u32 domid, 
+                                          unsigned int mem_kb)
+{
+    int err;
+
+    err = do_dom_mem_op(xc_handle, MEMOP_increase_reservation, NULL,
+                        mem_kb / 4, 0, domid);
+    if (err == mem_kb / 4)
+        return 0;
+
+    if (err > 0) {
+        errno = ENOMEM;
+        err = -1;
+    }
+    return err;
 }
diff -Nru a/tools/libxc/xc_linux_restore.c b/tools/libxc/xc_linux_restore.c
--- a/tools/libxc/xc_linux_restore.c    2005-05-20 13:03:08 -04:00
+++ b/tools/libxc/xc_linux_restore.c    2005-05-20 13:03:08 -04:00
@@ -167,14 +167,31 @@
     }
 
     /* Create domain on CPU -1 so that it may auto load-balance in future. */
-    if ( xc_domain_create(xc_handle, nr_pfns * (PAGE_SIZE / 1024),
-                          -1, 1, &dom) )
+    if ( xc_domain_create(xc_handle, &dom) )
     {
-       xcio_error(ioctxt, "Could not create domain. pfns=%ld, %ldKB",
-                  nr_pfns, nr_pfns * (PAGE_SIZE / 1024));
+        xcio_error(ioctxt, "Could not create domain.");
         goto out;
     }
-    
+    if ( xc_domain_setcpuweight(xc_handle, dom, 1) )
+    {
+        xcio_error(ioctxt, "Could not set domain cpuweight.");
+        goto out;
+    }
+    if ( xc_domain_setmaxmem(xc_handle, dom, nr_pfns * (PAGE_SIZE / 1024)) )
+    {
+        xcio_error(ioctxt, "Could not set domain maxmem. pfns=%ld, %ldKB",
+                   nr_pfns, nr_pfns * (PAGE_SIZE / 1024));
+        goto out;
+    }
+    if ( xc_domain_memory_increase_reservation(xc_handle, dom,
+                                               nr_pfns * (PAGE_SIZE / 1024)) )
+    {
+        xcio_error(ioctxt,
+                   "Could not increase domain memory reservation. pfns=%ld",
+                   nr_pfns);
+        goto out;
+    }
+
     ioctxt->domain = dom;
     xcio_info(ioctxt, "Created domain %u\n", dom);
 
diff -Nru a/tools/python/xen/lowlevel/xc/xc.c 
b/tools/python/xen/lowlevel/xc/xc.c
--- a/tools/python/xen/lowlevel/xc/xc.c 2005-05-20 13:03:08 -04:00
+++ b/tools/python/xen/lowlevel/xc/xc.c 2005-05-20 13:03:08 -04:00
@@ -69,20 +69,15 @@
 {
     XcObject *xc = (XcObject *)self;
 
-    unsigned int mem_kb = 0;
-    int          cpu = -1;
-    float        cpu_weight = 1;
     u32          dom = 0;
     int          ret;
 
-    static char *kwd_list[] = { "dom", "mem_kb", "cpu", "cpu_weight", NULL };
+    static char *kwd_list[] = { "dom", NULL };
 
-    if ( !PyArg_ParseTupleAndKeywords(args, kwds, "|iiif", kwd_list, 
-                                      &dom, &mem_kb, &cpu, &cpu_weight))
+    if ( !PyArg_ParseTupleAndKeywords(args, kwds, "|i", kwd_list, &dom))
         return NULL;
 
-    if ( (ret = xc_domain_create(
-                    xc->xc_handle, mem_kb, cpu, cpu_weight, &dom)) < 0 )
+    if ( (ret = xc_domain_create(xc->xc_handle, &dom)) < 0 )
         return PyErr_SetFromErrno(xc_error);
 
     return PyInt_FromLong(dom);
@@ -171,6 +166,28 @@
     return zero;
 }
 
+static PyObject *pyxc_domain_setcpuweight(PyObject *self,
+                                         PyObject *args,
+                                         PyObject *kwds)
+{
+    XcObject *xc = (XcObject *)self;
+
+    u32 dom;
+    float cpuweight = 1;
+
+    static char *kwd_list[] = { "dom", "cpuweight", NULL };
+
+    if ( !PyArg_ParseTupleAndKeywords(args, kwds, "i|f", kwd_list, 
+                                      &dom, &cpuweight) )
+        return NULL;
+
+    if ( xc_domain_setcpuweight(xc->xc_handle, dom, cpuweight) != 0 )
+        return PyErr_SetFromErrno(xc_error);
+    
+    Py_INCREF(zero);
+    return zero;
+}
+
 static PyObject *pyxc_domain_getinfo(PyObject *self,
                                      PyObject *args,
                                      PyObject *kwds)
@@ -928,6 +945,28 @@
     return zero;
 }
 
+static PyObject *pyxc_domain_memory_increase_reservation(PyObject *self,
+                                                        PyObject *args,
+                                                        PyObject *kwds)
+{
+    XcObject *xc = (XcObject *)self;
+
+    u32 dom;
+    unsigned long mem_kb;
+
+    static char *kwd_list[] = { "dom", "mem_kb", NULL };
+
+    if ( !PyArg_ParseTupleAndKeywords(args, kwds, "ii", kwd_list, 
+                                      &dom, &mem_kb) )
+        return NULL;
+
+    if ( xc_domain_memory_increase_reservation(xc->xc_handle, dom, mem_kb) )
+        return PyErr_SetFromErrno(xc_error);
+    
+    Py_INCREF(zero);
+    return zero;
+}
+
 
 static PyMethodDef pyxc_methods[] = {
     { "domain_create", 
@@ -935,7 +974,6 @@
       METH_VARARGS | METH_KEYWORDS, "\n"
       "Create a new domain.\n"
       " dom    [int, 0]:        Domain identifier to use (allocated if 
zero).\n"
-      " mem_kb [int, 0]:        Memory allocation, in kilobytes.\n"
       "Returns: [int] new domain identifier; -1 on error.\n" },
 
     { "domain_dumpcore", 
@@ -976,6 +1014,14 @@
       " cpumap [int, -1]: Bitmap of usable CPUs.\n\n"
       "Returns: [int] 0 on success; -1 on error.\n" },
 
+    { "domain_setcpuweight", 
+      (PyCFunction)pyxc_domain_setcpuweight, 
+      METH_VARARGS | METH_KEYWORDS, "\n"
+      "Set cpuweight scheduler parameter for domain.\n"
+      " dom [int]:            Identifier of domain to be changed.\n"
+      " cpuweight [float, 1]: VCPU being pinned.\n"
+      "Returns: [int] 0 on success; -1 on error.\n" },
+
     { "domain_getinfo", 
       (PyCFunction)pyxc_domain_getinfo, 
       METH_VARARGS | METH_KEYWORDS, "\n"
@@ -1010,14 +1056,6 @@

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] XendDomainInfo.py, xc.c, xc_linux_restore.c, xc_domain.c, xc.h:, BitKeeper Bot <=