diff options
author | Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> | 2020-07-02 14:53:51 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2020-07-06 08:59:58 -0300 |
commit | e7a90882b05b2669df7a0aa2e87e6283c7edff33 (patch) | |
tree | 0012057bddef87f67edf5f1fa795206a2810ae9a /tools/lib/traceevent/event-parse-local.h | |
parent | 487ae1f4a17c197ab77b3ea593049a11187ec9a1 (diff) |
tools lib traceevent: Optimize pretty_print() function
Each time the pretty_print() function is called to print an event, the
event's format string is parsed. As this format string does not change,
this parsing can be done only once - when the event struct is
initialized.
Link: https://lore.kernel.org/linux-trace-devel/20200529134929.537110-1-tz.stoyanov@gmail.com
Link: http://lore.kernel.org/linux-trace-devel/20200625100516.365338-8-tz.stoyanov@gmail.com
Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: linux-trace-devel@vger.kernel.org
Link: http://lore.kernel.org/lkml/20200702185704.559785000@goodmis.org
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/lib/traceevent/event-parse-local.h')
-rw-r--r-- | tools/lib/traceevent/event-parse-local.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/tools/lib/traceevent/event-parse-local.h b/tools/lib/traceevent/event-parse-local.h index 96a0b0ca0675..e71296a62236 100644 --- a/tools/lib/traceevent/event-parse-local.h +++ b/tools/lib/traceevent/event-parse-local.h @@ -85,6 +85,23 @@ struct tep_handle { struct tep_plugins_dir *plugins_dir; }; +enum tep_print_parse_type { + PRINT_FMT_STING, + PRINT_FMT_ARG_DIGIT, + PRINT_FMT_ARG_POINTER, + PRINT_FMT_ARG_STRING, +}; + +struct tep_print_parse { + struct tep_print_parse *next; + + char *format; + int ls; + enum tep_print_parse_type type; + struct tep_print_arg *arg; + struct tep_print_arg *len_as_arg; +}; + void tep_free_event(struct tep_event *event); void tep_free_format_field(struct tep_format_field *field); void tep_free_plugin_paths(struct tep_handle *tep); |