lkml.org 
[lkml]   [2018]   [Apr]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[for-next][PATCH 06/18] tracing: Fix display of hist trigger expressions containing timestamps
    From: Tom Zanussi <tom.zanussi@linux.intel.com>

    When displaying hist triggers, variable references that have the
    timestamp field flag set are erroneously displayed as common_timestamp
    rather than the variable reference. Additionally, timestamp
    expressions are displayed in the same way. Fix this by forcing the
    timestamp flag handling to follow variable reference and expression
    handling.

    Before:

    # cat /sys/kernel/debug/tracing/events/sched/sched_switch/trigger
    hist:keys=next_pid:vals=hitcount:wakeup_lat=common_timestamp.usecs:...

    After:

    # cat /sys/kernel/debug/tracing/events/sched/sched_switch/trigger
    hist:keys=next_pid:vals=hitcount:wakeup_lat=common_timestamp.usecs-$ts0.usecs:...

    Link: http://lkml.kernel.org/r/92746b06be67499c2a6217bd55395b350ad18fad.1522256721.git.tom.zanussi@linux.intel.com

    Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    ---
    kernel/trace/trace_events_hist.c | 19 +++++--------------
    1 file changed, 5 insertions(+), 14 deletions(-)

    diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c
    index a02bc09d765a..4f4792f4c83f 100644
    --- a/kernel/trace/trace_events_hist.c
    +++ b/kernel/trace/trace_events_hist.c
    @@ -1686,8 +1686,6 @@ static const char *hist_field_name(struct hist_field *field,
    else if (field->flags & HIST_FIELD_FL_LOG2 ||
    field->flags & HIST_FIELD_FL_ALIAS)
    field_name = hist_field_name(field->operands[0], ++level);
    - else if (field->flags & HIST_FIELD_FL_TIMESTAMP)
    - field_name = "common_timestamp";
    else if (field->flags & HIST_FIELD_FL_CPU)
    field_name = "cpu";
    else if (field->flags & HIST_FIELD_FL_EXPR ||
    @@ -1703,7 +1701,8 @@ static const char *hist_field_name(struct hist_field *field,
    field_name = full_name;
    } else
    field_name = field->name;
    - }
    + } else if (field->flags & HIST_FIELD_FL_TIMESTAMP)
    + field_name = "common_timestamp";

    if (field_name == NULL)
    field_name = "";
    @@ -4858,23 +4857,15 @@ static void hist_field_print(struct seq_file *m, struct hist_field *hist_field)
    if (hist_field->var.name)
    seq_printf(m, "%s=", hist_field->var.name);

    - if (hist_field->flags & HIST_FIELD_FL_TIMESTAMP)
    - seq_puts(m, "common_timestamp");
    - else if (hist_field->flags & HIST_FIELD_FL_CPU)
    + if (hist_field->flags & HIST_FIELD_FL_CPU)
    seq_puts(m, "cpu");
    else if (field_name) {
    if (hist_field->flags & HIST_FIELD_FL_VAR_REF ||
    hist_field->flags & HIST_FIELD_FL_ALIAS)
    seq_putc(m, '$');
    seq_printf(m, "%s", field_name);
    - }
    -
    - if (hist_field->flags) {
    - const char *flags_str = get_hist_field_flags(hist_field);
    -
    - if (flags_str)
    - seq_printf(m, ".%s", flags_str);
    - }
    + } else if (hist_field->flags & HIST_FIELD_FL_TIMESTAMP)
    + seq_puts(m, "common_timestamp");
    }

    static int event_hist_trigger_print(struct seq_file *m,
    --
    2.15.1

    \
     
     \ /
      Last update: 2018-04-06 15:04    [W:4.257 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site