Commit 0ae7961e authored by Tom Zanussi's avatar Tom Zanussi Committed by Steven Rostedt (VMware)

tracing: Fix display of hist trigger expressions containing timestamps

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.comSigned-off-by: default avatarTom Zanussi <tom.zanussi@linux.intel.com>
Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
parent 419e9fe5
...@@ -1686,8 +1686,6 @@ static const char *hist_field_name(struct hist_field *field, ...@@ -1686,8 +1686,6 @@ static const char *hist_field_name(struct hist_field *field,
else if (field->flags & HIST_FIELD_FL_LOG2 || else if (field->flags & HIST_FIELD_FL_LOG2 ||
field->flags & HIST_FIELD_FL_ALIAS) field->flags & HIST_FIELD_FL_ALIAS)
field_name = hist_field_name(field->operands[0], ++level); 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) else if (field->flags & HIST_FIELD_FL_CPU)
field_name = "cpu"; field_name = "cpu";
else if (field->flags & HIST_FIELD_FL_EXPR || else if (field->flags & HIST_FIELD_FL_EXPR ||
...@@ -1703,7 +1701,8 @@ static const char *hist_field_name(struct hist_field *field, ...@@ -1703,7 +1701,8 @@ static const char *hist_field_name(struct hist_field *field,
field_name = full_name; field_name = full_name;
} else } else
field_name = field->name; field_name = field->name;
} } else if (field->flags & HIST_FIELD_FL_TIMESTAMP)
field_name = "common_timestamp";
if (field_name == NULL) if (field_name == NULL)
field_name = ""; field_name = "";
...@@ -4858,23 +4857,15 @@ static void hist_field_print(struct seq_file *m, struct hist_field *hist_field) ...@@ -4858,23 +4857,15 @@ static void hist_field_print(struct seq_file *m, struct hist_field *hist_field)
if (hist_field->var.name) if (hist_field->var.name)
seq_printf(m, "%s=", hist_field->var.name); seq_printf(m, "%s=", hist_field->var.name);
if (hist_field->flags & HIST_FIELD_FL_TIMESTAMP) if (hist_field->flags & HIST_FIELD_FL_CPU)
seq_puts(m, "common_timestamp");
else if (hist_field->flags & HIST_FIELD_FL_CPU)
seq_puts(m, "cpu"); seq_puts(m, "cpu");
else if (field_name) { else if (field_name) {
if (hist_field->flags & HIST_FIELD_FL_VAR_REF || if (hist_field->flags & HIST_FIELD_FL_VAR_REF ||
hist_field->flags & HIST_FIELD_FL_ALIAS) hist_field->flags & HIST_FIELD_FL_ALIAS)
seq_putc(m, '$'); seq_putc(m, '$');
seq_printf(m, "%s", field_name); seq_printf(m, "%s", field_name);
} } else if (hist_field->flags & HIST_FIELD_FL_TIMESTAMP)
seq_puts(m, "common_timestamp");
if (hist_field->flags) {
const char *flags_str = get_hist_field_flags(hist_field);
if (flags_str)
seq_printf(m, ".%s", flags_str);
}
} }
static int event_hist_trigger_print(struct seq_file *m, static int event_hist_trigger_print(struct seq_file *m,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment