diff options
| author | Todd E Brandt <todd.e.brandt@linux.intel.com> | 2014-06-06 08:40:17 -0400 |
|---|---|---|
| committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2014-06-06 18:18:07 -0400 |
| commit | bb3632c6101b2fad07e6246721466b984b1e0e9d (patch) | |
| tree | 1f5755a94c7dfe2b2051411e0f08620b398a9059 /include/trace | |
| parent | 3eba148d75670f61463dd3c9ef8672da8f290f36 (diff) | |
PM / sleep: trace events for suspend/resume
Adds trace events that give finer resolution into suspend/resume. These
events are graphed in the timelines generated by the analyze_suspend.py
script. They represent large areas of time consumed that are typical to
suspend and resume.
The event is triggered by calling the function "trace_suspend_resume"
with three arguments: a string (the name of the event to be displayed
in the timeline), an integer (case specific number, such as the power
state or cpu number), and a boolean (where true is used to denote the start
of the timeline event, and false to denote the end).
The suspend_resume trace event reproduces the data that the machine_suspend
trace event did, so the latter has been removed.
Signed-off-by: Todd Brandt <todd.e.brandt@intel.com>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'include/trace')
| -rw-r--r-- | include/trace/events/power.h | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/include/trace/events/power.h b/include/trace/events/power.h index 9a7e08d61258..f88c8573e66c 100644 --- a/include/trace/events/power.h +++ b/include/trace/events/power.h | |||
| @@ -7,6 +7,9 @@ | |||
| 7 | #include <linux/ktime.h> | 7 | #include <linux/ktime.h> |
| 8 | #include <linux/pm_qos.h> | 8 | #include <linux/pm_qos.h> |
| 9 | #include <linux/tracepoint.h> | 9 | #include <linux/tracepoint.h> |
| 10 | #include <linux/ftrace_event.h> | ||
| 11 | |||
| 12 | #define TPS(x) tracepoint_string(x) | ||
| 10 | 13 | ||
| 11 | DECLARE_EVENT_CLASS(cpu, | 14 | DECLARE_EVENT_CLASS(cpu, |
| 12 | 15 | ||
| @@ -97,23 +100,6 @@ DEFINE_EVENT(cpu, cpu_frequency, | |||
| 97 | TP_ARGS(frequency, cpu_id) | 100 | TP_ARGS(frequency, cpu_id) |
| 98 | ); | 101 | ); |
| 99 | 102 | ||
| 100 | TRACE_EVENT(machine_suspend, | ||
| 101 | |||
| 102 | TP_PROTO(unsigned int state), | ||
| 103 | |||
| 104 | TP_ARGS(state), | ||
| 105 | |||
| 106 | TP_STRUCT__entry( | ||
| 107 | __field( u32, state ) | ||
| 108 | ), | ||
| 109 | |||
| 110 | TP_fast_assign( | ||
| 111 | __entry->state = state; | ||
| 112 | ), | ||
| 113 | |||
| 114 | TP_printk("state=%lu", (unsigned long)__entry->state) | ||
| 115 | ); | ||
| 116 | |||
| 117 | TRACE_EVENT(device_pm_report_time, | 103 | TRACE_EVENT(device_pm_report_time, |
| 118 | 104 | ||
| 119 | TP_PROTO(struct device *dev, const char *pm_ops, s64 ops_time, | 105 | TP_PROTO(struct device *dev, const char *pm_ops, s64 ops_time, |
| @@ -151,6 +137,28 @@ TRACE_EVENT(device_pm_report_time, | |||
| 151 | __entry->ops_time, __entry->error) | 137 | __entry->ops_time, __entry->error) |
| 152 | ); | 138 | ); |
| 153 | 139 | ||
| 140 | TRACE_EVENT(suspend_resume, | ||
| 141 | |||
| 142 | TP_PROTO(const char *action, int val, bool start), | ||
| 143 | |||
| 144 | TP_ARGS(action, val, start), | ||
| 145 | |||
| 146 | TP_STRUCT__entry( | ||
| 147 | __field(const char *, action) | ||
| 148 | __field(int, val) | ||
| 149 | __field(bool, start) | ||
| 150 | ), | ||
| 151 | |||
| 152 | TP_fast_assign( | ||
| 153 | __entry->action = action; | ||
| 154 | __entry->val = val; | ||
| 155 | __entry->start = start; | ||
| 156 | ), | ||
| 157 | |||
| 158 | TP_printk("%s[%u] %s", __entry->action, (unsigned int)__entry->val, | ||
| 159 | (__entry->start)?"begin":"end") | ||
| 160 | ); | ||
| 161 | |||
| 154 | DECLARE_EVENT_CLASS(wakeup_source, | 162 | DECLARE_EVENT_CLASS(wakeup_source, |
| 155 | 163 | ||
| 156 | TP_PROTO(const char *name, unsigned int state), | 164 | TP_PROTO(const char *name, unsigned int state), |
