This commit is contained in:
Kovid Goyal 2014-07-18 08:16:13 +05:30
parent 0aa3c075e4
commit 488a99cba4

View File

@ -46,7 +46,7 @@ class WinPNPScanner(object):
def drive_is_ok(self, letter, debug=False): def drive_is_ok(self, letter, debug=False):
import win32api, win32file import win32api, win32file
with self.lock: with self.lock:
oldError = win32api.SetErrorMode(1) #SEM_FAILCRITICALERRORS = 1 oldError = win32api.SetErrorMode(1) # SEM_FAILCRITICALERRORS = 1
try: try:
ans = True ans = True
try: try:
@ -76,8 +76,8 @@ class WinPNPScanner(object):
return order return order
def __call__(self, debug=False): def __call__(self, debug=False):
#import traceback # import traceback
#traceback.print_stack() # traceback.print_stack()
if self.scanner is None: if self.scanner is None:
return {} return {}
@ -157,7 +157,8 @@ class LibUSBScanner(object):
start = memory() start = memory()
for i in xrange(num): for i in xrange(num):
self() self()
for i in xrange(3): gc.collect() for i in xrange(3):
gc.collect()
print 'Mem consumption increased by:', memory() - start, 'MB', print 'Mem consumption increased by:', memory() - start, 'MB',
print 'after', num, 'repeats' print 'after', num, 'repeats'
@ -239,54 +240,53 @@ class FreeBSDScanner(object):
import dbus import dbus
try: try:
bus = dbus.SystemBus() bus = dbus.SystemBus()
manager = dbus.Interface(bus.get_object('org.freedesktop.Hal', manager = dbus.Interface(bus.get_object('org.freedesktop.Hal',
'/org/freedesktop/Hal/Manager'), 'org.freedesktop.Hal.Manager') '/org/freedesktop/Hal/Manager'), 'org.freedesktop.Hal.Manager')
paths = manager.FindDeviceStringMatch('freebsd.driver','da') paths = manager.FindDeviceStringMatch('freebsd.driver','da')
for path in paths: for path in paths:
obj = bus.get_object('org.freedesktop.Hal', path) obj = bus.get_object('org.freedesktop.Hal', path)
objif = dbus.Interface(obj, 'org.freedesktop.Hal.Device') objif = dbus.Interface(obj, 'org.freedesktop.Hal.Device')
parentdriver = None parentdriver = None
while parentdriver != 'umass': while parentdriver != 'umass':
try:
obj = bus.get_object('org.freedesktop.Hal',
objif.GetProperty('info.parent'))
objif = dbus.Interface(obj, 'org.freedesktop.Hal.Device')
try: try:
parentdriver = objif.GetProperty('freebsd.driver') obj = bus.get_object('org.freedesktop.Hal',
except dbus.exceptions.DBusException, e: objif.GetProperty('info.parent'))
continue objif = dbus.Interface(obj, 'org.freedesktop.Hal.Device')
except dbus.exceptions.DBusException, e: try:
break parentdriver = objif.GetProperty('freebsd.driver')
if parentdriver != 'umass': except dbus.exceptions.DBusException as e:
continue continue
dev = [] except dbus.exceptions.DBusException as e:
try: break
dev.append(objif.GetProperty('usb.vendor_id')) if parentdriver != 'umass':
dev.append(objif.GetProperty('usb.product_id')) continue
dev.append(objif.GetProperty('usb.device_revision_bcd')) dev = []
except dbus.exceptions.DBusException, e: try:
continue dev.append(objif.GetProperty('usb.vendor_id'))
try: dev.append(objif.GetProperty('usb.product_id'))
dev.append(objif.GetProperty('info.vendor')) dev.append(objif.GetProperty('usb.device_revision_bcd'))
except: except dbus.exceptions.DBusException as e:
dev.append('') continue
try: try:
dev.append(objif.GetProperty('info.product')) dev.append(objif.GetProperty('info.vendor'))
except: except:
dev.append('') dev.append('')
try: try:
dev.append(objif.GetProperty('usb.serial')) dev.append(objif.GetProperty('info.product'))
except: except:
dev.append('') dev.append('')
dev.append(path) try:
ans.add(tuple(dev)) dev.append(objif.GetProperty('usb.serial'))
except dbus.exceptions.DBusException, e: except:
print >>sys.stderr, "Execution failed:", e dev.append('')
dev.append(path)
ans.add(tuple(dev))
except dbus.exceptions.DBusException as e:
print >>sys.stderr, "Execution failed:", e
return ans return ans
if islinux: if islinux:
linux_scanner = LinuxScanner() linux_scanner = LinuxScanner()
@ -335,16 +335,19 @@ def test_for_mem_leak():
gc.disable() gc.disable()
scanner = DeviceScanner() scanner = DeviceScanner()
scanner.scan() scanner.scan()
memory() # load the psutil library memory() # load the psutil library
for i in xrange(3): gc.collect() for i in xrange(3):
gc.collect()
for reps in (1, 10, 100, 1000): for reps in (1, 10, 100, 1000):
for i in xrange(3): gc.collect() for i in xrange(3):
gc.collect()
h1 = gc_histogram() h1 = gc_histogram()
startmem = memory() startmem = memory()
for i in xrange(reps): for i in xrange(reps):
scanner.scan() scanner.scan()
for i in xrange(3): gc.collect() for i in xrange(3):
gc.collect()
usedmem = memory(startmem) usedmem = memory(startmem)
prints('Memory used in %d repetitions of scan(): %.5f KB'%(reps, prints('Memory used in %d repetitions of scan(): %.5f KB'%(reps,
1024*usedmem)) 1024*usedmem))
@ -356,12 +359,14 @@ def test_for_mem_leak():
return return
for reps in (1, 10, 100, 1000): for reps in (1, 10, 100, 1000):
for i in xrange(3): gc.collect() for i in xrange(3):
gc.collect()
h1 = gc_histogram() h1 = gc_histogram()
startmem = memory() startmem = memory()
for i in xrange(reps): for i in xrange(reps):
win_pnp_drives() win_pnp_drives()
for i in xrange(3): gc.collect() for i in xrange(3):
gc.collect()
usedmem = memory(startmem) usedmem = memory(startmem)
prints('Memory used in %d repetitions of pnp_scan(): %.5f KB'%(reps, prints('Memory used in %d repetitions of pnp_scan(): %.5f KB'%(reps,
1024*usedmem)) 1024*usedmem))