def parse_iomem():
regions = []
- f, e = input_open('/proc/iomem', False, 'r')
+ f = input_open('/proc/iomem')
for line in f:
r = MemRegion.parse_iomem_line(line)
## XXX what else to ignore??
return 0
-def input_open(name, optional, *args):
+def input_open(name, mode='r', optional=False):
inputs['files_opt' if optional else 'files'].add(name)
try:
- f = open(options.root + name, *args)
+ f = open(options.root + name, mode)
except Exception as e:
- if optional:
- return None, e
+ if optional or options.generate_collector:
+ return open("/dev/null", mode)
raise e
- return f, None
+ return f
def input_readline(name, optional=False):
- f, e = input_open(name, optional, 'r')
- if f is None and optional:
- return ''
-
+ f = input_open(name, optional=optional)
line = f.readline()
f.close()
return line
# parsing of DMAR ACPI Table
# see Intel VT-d Spec chapter 8
def parse_dmar():
- f, e = input_open('/sys/firmware/acpi/tables/DMAR', True, 'rb')
- if not f:
- if options.generate_collector:
- return 0, []
- if e:
- raise e
- raise RuntimeError('could not find DMAR ACPI table')
-
+ f = input_open('/sys/firmware/acpi/tables/DMAR', 'rb')
signature = f.read(4)
if signature != b'DMAR':
+ if options.generate_collector:
+ return 0, []
raise RuntimeError('incorrect input file format %s' % signature)
(length,) = struct.unpack('<I', f.read(4))
f.seek(48)
def parse_ioports():
pm_timer_base = None
- f, e = input_open('/proc/ioports', False, 'r')
+ f = input_open('/proc/ioports')
for line in f:
if line.endswith('ACPI PM_TMR\n'):
pm_timer_base = int(line.split('-')[0], 16)