@@ -480,7 +480,7 @@ class Provider(object):
"""Indicate whether field is valid according to fields_filter."""
if not fields_filter:
return True
- return re.match(fields_filter, field) is not None
+ return fields_filter.match(field) is not None
@staticmethod
def walkdir(path):
@@ -811,9 +811,10 @@ class Stats(object):
"""
def __init__(self, options):
- self.providers = self.__get_providers(options)
self._pid_filter = options.pid
self._fields_filter = options.fields
+ self._fields_filter_comp = re.compile(options.fields)
+ self.providers = self.__get_providers(options)
self.values = {}
def __get_providers(self, options):
@@ -821,10 +822,12 @@ class Stats(object):
providers = []
if options.debugfs:
- providers.append(DebugfsProvider(options.pid, options.fields,
+ providers.append(DebugfsProvider(self._pid_filter,
+ self._fields_filter_comp,
options.dbgfs_include_past))
if options.tracepoints or not providers:
- providers.append(TracepointProvider(options.pid, options.fields))
+ providers.append(TracepointProvider(self._pid_filter,
+ self._fields_filter_comp))
return providers
@@ -834,7 +837,7 @@ class Stats(object):
# also clear the cache of old values.
self.values = {}
for provider in self.providers:
- provider.update_fields(self._fields_filter)
+ provider.update_fields(self._fields_filter_comp)
def reset(self):
self.values = {}
@@ -849,6 +852,7 @@ class Stats(object):
def fields_filter(self, fields_filter):
if fields_filter != self._fields_filter:
self._fields_filter = fields_filter
+ self._fields_filter_comp = re.compile(fields_filter)
self.__update_provider_filters()
@property
@@ -1040,7 +1044,7 @@ class Tui(object):
self.stats.fields_filter = DEFAULT_REGEX
elif self.stats.fields_filter == DEFAULT_REGEX:
- self.stats.fields_filter = None
+ self.stats.fields_filter = ''
def __update_pid(self, pid):
"""Propagates pid selection to stats object."""
@@ -1548,7 +1552,7 @@ def main():
stats = Stats(options)
if options.fields == 'help':
- stats.fields_filter = None
+ stats.fields_filter = ''
event_list = []
for key in stats.get().keys():
event_list.append(key.split('(', 1)[0])