ia64/xen-unstable

view tools/python/xen/xend/server/iopif.py @ 13642:ba3ec84c9423

[XEND] Add missing ConsoleController.py

Signed-off-by: Alastair Tse <atse@xensource.com>
author Alastair Tse <atse@xensource.com>
date Fri Jan 26 02:44:35 2007 +0000 (2007-01-26)
parents 5bed7bc05c8a
children 91a2b9309a72
line source
1 #============================================================================
2 # This library is free software; you can redistribute it and/or
3 # modify it under the terms of version 2.1 of the GNU Lesser General Public
4 # License as published by the Free Software Foundation.
5 #
6 # This library is distributed in the hope that it will be useful,
7 # but WITHOUT ANY WARRANTY; without even the implied warranty of
8 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
9 # Lesser General Public License for more details.
10 #
11 # You should have received a copy of the GNU Lesser General Public
12 # License along with this library; if not, write to the Free Software
13 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
14 #============================================================================
15 # Copyright (C) 2004, 2005 Mike Wray <mike.wray@hp.com>
16 # Copyright (C) 2005 XenSource Ltd
17 # Copyright (C) 2005 Jody Belka
18 #============================================================================
21 import types
23 import xen.lowlevel.xc
25 from xen.xend.XendError import VmError
27 from xen.xend.server.DevController import DevController
30 xc = xen.lowlevel.xc.xc()
33 def parse_ioport(val):
34 """Parse an i/o port field.
35 """
36 if isinstance(val, types.StringType):
37 radix = 10
38 if val.startswith('0x') or val.startswith('0X'):
39 radix = 16
40 v = int(val, radix)
41 else:
42 v = val
43 return v
46 class IOPortsController(DevController):
48 def __init__(self, vm):
49 DevController.__init__(self, vm)
51 def getDeviceDetails(self, config):
52 """@see DevController.getDeviceDetails"""
54 def get_param(field):
55 try:
56 val = config.get(field)
58 if not val:
59 raise VmError('ioports: Missing %s config setting' % field)
61 return parse_ioport(val)
62 except:
63 raise VmError('ioports: Invalid config setting %s: %s' %
64 (field, val))
66 io_from = get_param('from')
67 io_to = get_param('to')
69 if io_to < io_from or io_to >= 65536:
70 raise VmError('ioports: Invalid i/o range: %s - %s' %
71 (io_from, io_to))
73 rc = xc.domain_ioport_permission(domid = self.getDomid(),
74 first_port = io_from,
75 nr_ports = io_to - io_from + 1,
76 allow_access = True)
78 if rc < 0:
79 #todo non-fatal
80 raise VmError(
81 'ioports: Failed to configure legacy i/o range: %s - %s' %
82 (io_from, io_to))
84 return (None, {}, {})