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

[Xen-devel] [PATCH 5/4] ioports: iopif.py missing from last patch



5/4

Possibly i shouldn't finish up patches and send them off
in the early hours of the morning :)

-- 
Jody Belka
knew (at) pimb (dot) org
# HG changeset patch
# User jmb@xxxxxxxxxxxxxxxxxxxxx
# Node ID 75f02d1da63baae6c51b6a51bb53034f639ec40a
# Parent  e2b5c74938f64d55609a690c22a18c3875b21d04
Somehow iopif.py got missed out of the previous commit. duh.

Signed-off-by: Jody Belka <knew (at) pimb (dot) org>

diff -r e2b5c74938f6 -r 75f02d1da63b tools/python/xen/xend/server/iopif.py
--- /dev/null   Sun Nov  6 01:15:44 2005
+++ b/tools/python/xen/xend/server/iopif.py     Sun Nov  6 20:02:55 2005
@@ -0,0 +1,86 @@
+#============================================================================
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of version 2.1 of the GNU Lesser General Public
+# License as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#============================================================================
+# Copyright (C) 2004, 2005 Mike Wray <mike.wray@xxxxxx>
+# Copyright (C) 2005 XenSource Ltd
+# Copyright (C) 2005 Jody Belka
+#============================================================================
+
+
+import types
+
+import xen.lowlevel.xc;
+
+from xen.xend import sxp
+from xen.xend.XendError import VmError
+
+from xen.xend.server.DevController import DevController
+
+
+xc = xen.lowlevel.xc.new()
+
+
+def parse_ioport(val):
+    """Parse an i/o port field.
+    """
+    if isinstance(val, types.StringType):
+        radix = 10
+        if val.startswith('0x') or val.startswith('0X'):
+            radix = 16
+        v = int(val, radix)
+    else:
+        v = val
+    return v
+
+
+class IOPortsController(DevController):
+
+    def __init__(self, vm):
+        DevController.__init__(self, vm)
+
+
+    def getDeviceDetails(self, config):
+        """@see DevController.getDeviceDetails"""
+
+        def get_param(field):
+            try:
+                val = sxp.child_value(config, field)
+
+                if not val:
+                    raise VmError('ioports: Missing %s config setting' % field)
+
+                return parse_ioport(val)
+            except:
+                raise VmError('ioports: Invalid config setting %s: %s' %
+                              (field, val))
+       
+        io_from = get_param('from')
+        io_to = get_param('to') 
+
+        if io_to < io_from or io_to >= 65536:
+            raise VmError('ioports: Invalid i/o range: %s - %s' %
+                          (io_from, io_to))
+
+        rc = xc.domain_ioport_permission(dom          = self.getDomid(),
+                                         first_port   = io_from,
+                                         nr_ports     = io_to - io_from + 1,
+                                         allow_access = True)
+
+        if rc < 0:
+            #todo non-fatal
+            raise VmError(
+                'ioports: Failed to configure legacy i/o range: %s - %s' %
+                (io_from, io_to))
+
+        return (dev, {}, {})
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

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