summaryrefslogtreecommitdiffstats
path: root/kernel/trace/trace.h
diff options
context:
space:
mode:
authorTom Zanussi <tom.zanussi@linux.intel.com>2018-01-15 21:51:56 -0500
committerSteven Rostedt (VMware) <rostedt@goodmis.org>2018-03-10 16:05:58 -0500
commit067fe038e70f6e64960d26a79c4df5f1413d0f13 (patch)
tree57e3c474f63b54b5a20494b2344a28efa0b9f976 /kernel/trace/trace.h
parent19a9facd0fe33a3e376923383958b2c86cbd3994 (diff)
tracing: Add variable reference handling to hist triggers
Add the necessary infrastructure to allow the variables defined on one event to be referenced in another. This allows variables set by a previous event to be referenced and used in expressions combining the variable values saved by that previous event and the event fields of the current event. For example, here's how a latency can be calculated and saved into yet another variable named 'wakeup_lat': # echo 'hist:keys=pid,prio:ts0=common_timestamp ... # echo 'hist:keys=next_pid:wakeup_lat=common_timestamp-$ts0 ... In the first event, the event's timetamp is saved into the variable ts0. In the next line, ts0 is subtracted from the second event's timestamp to produce the latency. Further users of variable references will be described in subsequent patches, such as for instance how the 'wakeup_lat' variable above can be displayed in a latency histogram. Link: http://lkml.kernel.org/r/b1d3e6975374e34d501ff417c20189c3f9b2c7b8.1516069914.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>
Diffstat (limited to 'kernel/trace/trace.h')
-rw-r--r--kernel/trace/trace.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
index 89771b4f16df..99b7ee7ed127 100644
--- a/kernel/trace/trace.h
+++ b/kernel/trace/trace.h
@@ -274,6 +274,7 @@ struct trace_array {
274 int function_enabled; 274 int function_enabled;
275#endif 275#endif
276 int time_stamp_abs_ref; 276 int time_stamp_abs_ref;
277 struct list_head hist_vars;
277}; 278};
278 279
279enum { 280enum {
@@ -1548,6 +1549,8 @@ extern void pause_named_trigger(struct event_trigger_data *data);
1548extern void unpause_named_trigger(struct event_trigger_data *data); 1549extern void unpause_named_trigger(struct event_trigger_data *data);
1549extern void set_named_trigger_data(struct event_trigger_data *data, 1550extern void set_named_trigger_data(struct event_trigger_data *data,
1550 struct event_trigger_data *named_data); 1551 struct event_trigger_data *named_data);
1552extern struct event_trigger_data *
1553get_named_trigger_data(struct event_trigger_data *data);
1551extern int register_event_command(struct event_command *cmd); 1554extern int register_event_command(struct event_command *cmd);
1552extern int unregister_event_command(struct event_command *cmd); 1555extern int unregister_event_command(struct event_command *cmd);
1553extern int register_trigger_hist_enable_disable_cmds(void); 1556extern int register_trigger_hist_enable_disable_cmds(void);