debuggers.hg
changeset 18082:2463e2ef602f
xend: A small cleanup to the find_sysfs_mnt() of pci.py
Signed-off-by: Dexuan Cui <dexuan.cui@intel.com>
Signed-off-by: Dexuan Cui <dexuan.cui@intel.com>
author | Keir Fraser <keir.fraser@citrix.com> |
---|---|
date | Mon Jul 14 10:09:25 2008 +0100 (2008-07-14) |
parents | d14c017e8163 |
children | caba894b265f |
files | tools/python/xen/util/pci.py |
line diff
1.1 --- a/tools/python/xen/util/pci.py Mon Jul 14 10:07:11 2008 +0100 1.2 +++ b/tools/python/xen/util/pci.py Mon Jul 14 10:09:25 2008 +0100 1.3 @@ -40,6 +40,9 @@ MSIX_SIZE_MASK = 0x7ff 1.4 # Global variable to store information from lspci 1.5 lspci_info = None 1.6 1.7 +# Global variable to store the sysfs mount point 1.8 +sysfs_mnt_point = None 1.9 + 1.10 #Calculate PAGE_SHIFT: number of bits to shift an address to get the page number 1.11 PAGE_SIZE = resource.getpagesize() 1.12 PAGE_SHIFT = 0 1.13 @@ -63,27 +66,28 @@ def parse_hex(val): 1.14 return None 1.15 1.16 def find_sysfs_mnt(): 1.17 - mounts_file = open(PROC_MNT_PATH,'r') 1.18 + global sysfs_mnt_point 1.19 + if not sysfs_mnt_point is None: 1.20 + return sysfs_mnt_point 1.21 + 1.22 + try: 1.23 + mounts_file = open(PROC_MNT_PATH,'r') 1.24 1.25 - for line in mounts_file: 1.26 - sline = line.split() 1.27 - if len(sline)<3: 1.28 - continue 1.29 - 1.30 - if sline[2]=='sysfs': 1.31 - return sline[1] 1.32 - 1.33 + for line in mounts_file: 1.34 + sline = line.split() 1.35 + if len(sline)<3: 1.36 + continue 1.37 + if sline[2]=='sysfs': 1.38 + sysfs_mnt_point= sline[1] 1.39 + return sysfs_mnt_point 1.40 + except IOError, (errno, strerr): 1.41 + raise PciDeviceParseError(('Failed to locate sysfs mount: %s: %s (%d)'% 1.42 + (PROC_PCI_PATH, strerr, errno))) 1.43 return None 1.44 1.45 def get_all_pci_names(): 1.46 - try: 1.47 - sysfs_mnt = find_sysfs_mnt() 1.48 - except IOError, (errno, strerr): 1.49 - raise PciDeviceParseError(('Failed to locate sysfs mount: %s (%d)' % 1.50 - (PROC_PCI_PATH, strerr, errno))) 1.51 - 1.52 + sysfs_mnt = find_sysfs_mnt() 1.53 pci_names = os.popen('ls ' + sysfs_mnt + SYSFS_PCI_DEVS_PATH).read().split() 1.54 - 1.55 return pci_names 1.56 1.57 def get_all_pci_devices(): 1.58 @@ -175,12 +179,7 @@ class PciDevice: 1.59 self.get_info_from_lspci() 1.60 1.61 def find_capability(self, type): 1.62 - try: 1.63 - sysfs_mnt = find_sysfs_mnt() 1.64 - except IOError, (errno, strerr): 1.65 - raise PciDeviceParseError(('Failed to locate sysfs mount: %s (%d)' % 1.66 - (PROC_PCI_PATH, strerr, errno))) 1.67 - 1.68 + sysfs_mnt = find_sysfs_mnt() 1.69 if sysfs_mnt == None: 1.70 return False 1.71 path = sysfs_mnt+SYSFS_PCI_DEVS_PATH+'/'+ \ 1.72 @@ -218,7 +217,7 @@ class PciDevice: 1.73 self.pba_offset = self.pba_offset & ~MSIX_BIR_MASK 1.74 break 1.75 except IOError, (errno, strerr): 1.76 - raise PciDeviceParseError(('Failed to locate sysfs mount: %s (%d)' % 1.77 + raise PciDeviceParseError(('Failed to locate sysfs mount: %s: %s (%d)' % 1.78 (PROC_PCI_PATH, strerr, errno))) 1.79 1.80 def remove_msix_iomem(self, index, start, size): 1.81 @@ -237,12 +236,7 @@ class PciDevice: 1.82 1.83 def get_info_from_sysfs(self): 1.84 self.find_capability(0x11) 1.85 - try: 1.86 - sysfs_mnt = find_sysfs_mnt() 1.87 - except IOError, (errno, strerr): 1.88 - raise PciDeviceParseError(('Failed to locate sysfs mount: %s (%d)' % 1.89 - (PROC_PCI_PATH, strerr, errno))) 1.90 - 1.91 + sysfs_mnt = find_sysfs_mnt() 1.92 if sysfs_mnt == None: 1.93 return False 1.94