From c86ce6440806710ea6a6ffca4c448fb515f63c36 Mon Sep 17 00:00:00 2001 From: Sergei Trofimov Date: Wed, 31 May 2017 10:42:55 +0100 Subject: [PATCH] utils/trace_cmd: add parsers for more sched events Added parsers for sched_wakeup(_new) and sched_stat_* events that have non-standard text. --- wlauto/utils/trace_cmd.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/wlauto/utils/trace_cmd.py b/wlauto/utils/trace_cmd.py index bd87b98b..7a7b36d1 100644 --- a/wlauto/utils/trace_cmd.py +++ b/wlauto/utils/trace_cmd.py @@ -191,6 +191,20 @@ def sched_switch_parser(event, text): return default_body_parser(event, text.replace('==>', '')) +def sched_stat_parser(event, text): + """ + sched_stat_* events unclude the units, "[ns]", in an otherwise + regular key=value sequence; so the units need to be stripped out first. + """ + return default_body_parser(event, text.replace(' [ns]', '')) + + +def sched_wakeup_parser(event, text): + regex = re.compile(r'(?P\S+):(?P\d+) \[(?P\d+)\] success=(?P\d) CPU:(?P\d+)') + parse_func = regex_body_parser(regex) + return parse_func(event, text) + + # Maps event onto the corresponding parser for its body text. A parser may be # a callable with signature # @@ -200,7 +214,14 @@ def sched_switch_parser(event, text): # regex). In case of a string/regex, its named groups will be used to populate # the event's attributes. EVENT_PARSER_MAP = { + 'sched_stat_blocked': sched_stat_parser, + 'sched_stat_iowait': sched_stat_parser, + 'sched_stat_runtime': sched_stat_parser, + 'sched_stat_sleep': sched_stat_parser, + 'sched_stat_wait': sched_stat_parser, 'sched_switch': sched_switch_parser, + 'sched_wakeup': sched_wakeup_parser, + 'sched_wakeup_new': sched_wakeup_parser, } TRACE_EVENT_REGEX = re.compile(r'^\s+(?P\S+.*?\S+)\s+\[(?P\d+)\]\s+(?P[\d.]+):\s+'