Simon Horman
2009-May-29 07:05 UTC
[Xen-devel] [patch] xend: Add serialise_pci_opts() and split_pci_opts()
This centralises some code. Cc: Masaki Kanno <kanno.masaki@jp.fujitsu.com> Signed-off-by: Simon Horman <horms@verge.net.au> --- tools/python/xen/util/pci.py | 6 ++++++ tools/python/xen/xend/XendDomainInfo.py | 8 +++----- tools/python/xen/xend/server/pciif.py | 11 +++-------- 3 files changed, 12 insertions(+), 13 deletions(-) Index: xen-unstable.hg/tools/python/xen/util/pci.py ==================================================================--- xen-unstable.hg.orig/tools/python/xen/util/pci.py 2009-05-28 20:35:33.000000000 +1000 +++ xen-unstable.hg/tools/python/xen/util/pci.py 2009-05-28 21:40:55.000000000 +1000 @@ -114,6 +114,12 @@ PAGE_MASK=~(PAGE_SIZE - 1) def PCI_DEVFN(slot, func): return ((((slot) & 0x1f) << 3) | ((func) & 0x07)) +def serialise_pci_opts(opts): + return reduce(lambda x, y: x+'',''+y, map(lambda (x, y): x+''=''+y, opts)) + +def split_pci_opts(opts): + return map(lambda x: x.split(''=''), opts.split('','')) + def parse_hex(val): try: if isinstance(val, types.StringTypes): Index: xen-unstable.hg/tools/python/xen/xend/server/pciif.py ==================================================================--- xen-unstable.hg.orig/tools/python/xen/xend/server/pciif.py 2009-05-28 20:38:17.000000000 +1000 +++ xen-unstable.hg/tools/python/xen/xend/server/pciif.py 2009-05-28 22:05:20.000000000 +1000 @@ -76,10 +76,8 @@ class PciController(DevController): func = parse_hex(pci_config.get(''func'', 0)) vslot = parse_hex(assigned_or_requested_vslot(pci_config)) - opts = pci_config.get(''opts'', '''') - if len(opts) > 0: - opts = map(lambda (x, y): x+''=''+y, opts) - opts = reduce(lambda x, y: x+'',''+y, opts) + if pci_config.has_key(''opts''): + opts = serialise_pci_opts(pci_config[''opts'']) back[''opts-%i'' % pcidevid] = opts back[''dev-%i'' % pcidevid] = "%04x:%02x:%02x.%01x" % \ @@ -226,10 +224,7 @@ class PciController(DevController): dev_sxpr = [''dev''] for dev_key, dev_val in dev.items(): if dev_key == ''opts'': - opts = [] - for opt in dev_val.split('',''): - opts.append(opt.split(''='')) - dev_sxpr.append([''opts'', opts]) + dev_sxpr.append([''opts'', split_pci_opts(dev_val)]) else: dev_sxpr.append([dev_key, dev_val]) sxpr.append(dev_sxpr) Index: xen-unstable.hg/tools/python/xen/xend/XendDomainInfo.py ==================================================================--- xen-unstable.hg.orig/tools/python/xen/xend/XendDomainInfo.py 2009-05-28 20:55:58.000000000 +1000 +++ xen-unstable.hg/tools/python/xen/xend/XendDomainInfo.py 2009-05-28 22:05:45.000000000 +1000 @@ -39,7 +39,7 @@ from xen.util import asserts, auxbin from xen.util.blkif import blkdev_uname_to_file, blkdev_uname_to_taptype import xen.util.xsm.xsm as security from xen.util import xsconstants -from xen.util.pci import assigned_or_requested_vslot +from xen.util.pci import assigned_or_requested_vslot, serialise_pci_opts from xen.xend import balloon, sxp, uuid, image, arch from xen.xend import XendOptions, XendNode, XendConfig @@ -739,10 +739,8 @@ class XendDomainInfo: if self.domid is not None: opts = '''' - if ''opts'' in new_dev and len(new_dev[''opts'']) > 0: - config_opts = new_dev[''opts''] - config_opts = map(lambda (x, y): x+''=''+y, config_opts) - opts = '','' + reduce(lambda x, y: x+'',''+y, config_opts) + if new_dev.has_key(''opts''): + opts = '','' + serialise_pci_opts(new_dev[''opts'']) bdf_str = "%s:%s:%s.%s@%s%s" % (new_dev[''domain''], new_dev[''bus''], _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel