class Command:
- def __init__(self, add_arguments_cb, enable_proc_filter_args=False,
- enable_max_min_args=False):
+ def __init__(self, add_arguments_cb,
+ enable_proc_filter_args=False,
+ enable_max_min_args=False,
+ enable_max_min_size_arg=False,
+ enable_freq_arg=False,
+ enable_log_arg=False,
+ enable_stats_arg=False):
self._add_arguments_cb = add_arguments_cb
self._enable_proc_filter_args = enable_proc_filter_args
self._enable_max_min_arg = enable_max_min_args
+ self._enable_max_min_size_arg = enable_max_min_size_arg
+ self._enable_freq_arg = enable_freq_arg
+ self._enable_log_arg = enable_log_arg
+ self._enable_stats_arg = enable_stats_arg
self._create_automaton()
def _error(self, msg, exit_code=1):
else:
self._arg_min = args.min
+ if self._enable_max_min_size_arg:
+ if args.maxsize == -1:
+ self._arg_maxsize = None
+ else:
+ self._arg_maxsize = args.maxsize
+ if args.minsize == -1:
+ self._arg_minsize = None
+ else:
+ self._arg_minsize = args.minsize
+
+ if self._enable_freq_arg:
+ self._arg_freq = args.freq
+ self._arg_freq_resolution = args.freq_resolution
+
+ if self._enable_log_arg:
+ self._arg_log = args.log
+
+ if self._enable_stats_arg:
+ self._arg_stats = args.stats
+
def _parse_args(self):
ap = argparse.ArgumentParser(description=self._DESC)
ap.add_argument('--min', type=float, default=-1,
help='Filter out, duration shorter than min usec')
+ if self._enable_max_min_size_arg:
+ ap.add_argument('--maxsize', type=float, default=-1,
+ help='Filter out, I/O operations working with '
+ 'more that maxsize bytes')
+ ap.add_argument('--minsize', type=float, default=-1,
+ help='Filter out, I/O operations working with '
+ 'less that minsize bytes')
+
+ if self._enable_freq_arg:
+ ap.add_argument('--freq', action="store_true",
+ help='Show the frequency distribution of '
+ 'handler duration')
+ ap.add_argument('--freq-resolution', type=int, default=20,
+ help='Frequency distribution resolution '
+ '(default 20)')
+
+ if self._enable_log_arg:
+ ap.add_argument('--log', action="store_true",
+ help='Display the events in the order they '
+ 'appeared')
+
+ if self._enable_stats_arg:
+ ap.add_argument('--stats', action="store_true",
+ help='Display the statistics')
+
# specific arguments
self._add_arguments_cb(ap)
_DESC = """The irq command."""
def __init__(self):
- super().__init__(self._add_arguments, enable_max_min_args=True)
+ super().__init__(self._add_arguments,
+ enable_max_min_args=True,
+ enable_freq_arg=True,
+ enable_log_arg=True)
def _validate_transform_args(self):
+ # We need the min/max in the automaton to filter
+ # at the source.
self._automaton.state.max = self._arg_max
self._automaton.state.min = self._arg_min
+
self._arg_irq_filter_list = None
self._arg_softirq_filter_list = None
if self._args.irq:
self._arg_softirq_filter_list is None:
self._arg_irq_filter_list = []
self._arg_softirq_filter_list = []
- self._arg_freq = self._args.freq
- self._arg_freq_resolution = self._args.freq_resolution
- self._arg_log = self._args.log
def run(self):
# parse arguments first
ap.add_argument('--softirq', type=str, default=0,
help='Show results only for the list of '
'SoftIRQ')
- ap.add_argument('--freq', action="store_true",
- help='Show the frequency distribution of '
- 'handler duration')
- ap.add_argument('--freq-resolution', type=int, default=20,
- help='Frequency distribution resolution '
- '(default 20)')
- ap.add_argument('--log', action="store_true",
- help='Display the interrupt in the order they '
- 'were handled')
# entry point