Commit | Line | Data |
---|---|---|
b283666f PW |
1 | #undef TRACE_SYSTEM |
2 | #define TRACE_SYSTEM power | |
3 | ||
4 | #if !defined(_TRACE_POWER_H) || defined(TRACE_HEADER_MULTI_READ) | |
5 | #define _TRACE_POWER_H | |
6 | ||
7 | #include <linux/ktime.h> | |
8 | #include <linux/tracepoint.h> | |
9 | ||
10 | DECLARE_EVENT_CLASS(cpu, | |
11 | ||
12 | TP_PROTO(unsigned int state, unsigned int cpu_id), | |
13 | ||
14 | TP_ARGS(state, cpu_id), | |
15 | ||
16 | TP_STRUCT__entry( | |
17 | __field( u32, state ) | |
18 | __field( u32, cpu_id ) | |
19 | ), | |
20 | ||
21 | TP_fast_assign( | |
22 | __entry->state = state; | |
23 | __entry->cpu_id = cpu_id; | |
24 | ), | |
25 | ||
26 | TP_printk("state=%lu cpu_id=%lu", (unsigned long)__entry->state, | |
27 | (unsigned long)__entry->cpu_id) | |
28 | ); | |
29 | ||
30 | DEFINE_EVENT(cpu, cpu_idle, | |
31 | ||
32 | TP_PROTO(unsigned int state, unsigned int cpu_id), | |
33 | ||
34 | TP_ARGS(state, cpu_id) | |
35 | ); | |
36 | ||
37 | /* This file can get included multiple times, TRACE_HEADER_MULTI_READ at top */ | |
38 | #ifndef _PWR_EVENT_AVOID_DOUBLE_DEFINING | |
39 | #define _PWR_EVENT_AVOID_DOUBLE_DEFINING | |
40 | ||
41 | #define PWR_EVENT_EXIT -1 | |
42 | #endif | |
43 | ||
44 | DEFINE_EVENT(cpu, cpu_frequency, | |
45 | ||
46 | TP_PROTO(unsigned int frequency, unsigned int cpu_id), | |
47 | ||
48 | TP_ARGS(frequency, cpu_id) | |
49 | ); | |
50 | ||
51 | TRACE_EVENT(machine_suspend, | |
52 | ||
53 | TP_PROTO(unsigned int state), | |
54 | ||
55 | TP_ARGS(state), | |
56 | ||
57 | TP_STRUCT__entry( | |
58 | __field( u32, state ) | |
59 | ), | |
60 | ||
61 | TP_fast_assign( | |
62 | __entry->state = state; | |
63 | ), | |
64 | ||
65 | TP_printk("state=%lu", (unsigned long)__entry->state) | |
66 | ); | |
67 | ||
7c68b363 AG |
68 | DECLARE_EVENT_CLASS(wakeup_source, |
69 | ||
70 | TP_PROTO(const char *name, unsigned int state), | |
71 | ||
72 | TP_ARGS(name, state), | |
73 | ||
74 | TP_STRUCT__entry( | |
75 | __string( name, name ) | |
76 | __field( u64, state ) | |
77 | ), | |
78 | ||
79 | TP_fast_assign( | |
80 | __assign_str(name, name); | |
81 | __entry->state = state; | |
82 | ), | |
83 | ||
84 | TP_printk("%s state=0x%lx", __get_str(name), | |
85 | (unsigned long)__entry->state) | |
86 | ); | |
87 | ||
88 | DEFINE_EVENT(wakeup_source, wakeup_source_activate, | |
89 | ||
90 | TP_PROTO(const char *name, unsigned int state), | |
91 | ||
92 | TP_ARGS(name, state) | |
93 | ); | |
94 | ||
95 | DEFINE_EVENT(wakeup_source, wakeup_source_deactivate, | |
96 | ||
97 | TP_PROTO(const char *name, unsigned int state), | |
98 | ||
99 | TP_ARGS(name, state) | |
100 | ); | |
101 | ||
b283666f PW |
102 | #ifdef CONFIG_EVENT_POWER_TRACING_DEPRECATED |
103 | ||
104 | /* | |
105 | * The power events are used for cpuidle & suspend (power_start, power_end) | |
106 | * and for cpufreq (power_frequency) | |
107 | */ | |
108 | DECLARE_EVENT_CLASS(power, | |
109 | ||
110 | TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id), | |
111 | ||
112 | TP_ARGS(type, state, cpu_id), | |
113 | ||
114 | TP_STRUCT__entry( | |
115 | __field( u64, type ) | |
116 | __field( u64, state ) | |
117 | __field( u64, cpu_id ) | |
118 | ), | |
119 | ||
120 | TP_fast_assign( | |
121 | __entry->type = type; | |
122 | __entry->state = state; | |
123 | __entry->cpu_id = cpu_id; | |
124 | ), | |
125 | ||
126 | TP_printk("type=%lu state=%lu cpu_id=%lu", (unsigned long)__entry->type, | |
127 | (unsigned long)__entry->state, (unsigned long)__entry->cpu_id) | |
128 | ); | |
129 | ||
130 | DEFINE_EVENT(power, power_start, | |
131 | ||
132 | TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id), | |
133 | ||
134 | TP_ARGS(type, state, cpu_id) | |
135 | ); | |
136 | ||
137 | DEFINE_EVENT(power, power_frequency, | |
138 | ||
139 | TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id), | |
140 | ||
141 | TP_ARGS(type, state, cpu_id) | |
142 | ); | |
143 | ||
144 | TRACE_EVENT(power_end, | |
145 | ||
146 | TP_PROTO(unsigned int cpu_id), | |
147 | ||
148 | TP_ARGS(cpu_id), | |
149 | ||
150 | TP_STRUCT__entry( | |
151 | __field( u64, cpu_id ) | |
152 | ), | |
153 | ||
154 | TP_fast_assign( | |
155 | __entry->cpu_id = cpu_id; | |
156 | ), | |
157 | ||
158 | TP_printk("cpu_id=%lu", (unsigned long)__entry->cpu_id) | |
159 | ||
160 | ); | |
161 | ||
162 | /* Deprecated dummy functions must be protected against multi-declartion */ | |
163 | #ifndef _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED | |
164 | #define _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED | |
165 | ||
166 | enum { | |
167 | POWER_NONE = 0, | |
168 | POWER_CSTATE = 1, | |
169 | POWER_PSTATE = 2, | |
170 | }; | |
171 | #endif /* _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED */ | |
172 | ||
173 | #else /* CONFIG_EVENT_POWER_TRACING_DEPRECATED */ | |
174 | ||
175 | #ifndef _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED | |
176 | #define _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED | |
177 | enum { | |
178 | POWER_NONE = 0, | |
179 | POWER_CSTATE = 1, | |
180 | POWER_PSTATE = 2, | |
181 | }; | |
182 | ||
183 | /* These dummy declaration have to be ripped out when the deprecated | |
184 | events get removed */ | |
185 | static inline void trace_power_start(u64 type, u64 state, u64 cpuid) {}; | |
186 | static inline void trace_power_end(u64 cpuid) {}; | |
7c68b363 AG |
187 | static inline void trace_power_start_rcuidle(u64 type, u64 state, u64 cpuid) {}; |
188 | static inline void trace_power_end_rcuidle(u64 cpuid) {}; | |
b283666f PW |
189 | static inline void trace_power_frequency(u64 type, u64 state, u64 cpuid) {}; |
190 | #endif /* _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED */ | |
191 | ||
192 | #endif /* CONFIG_EVENT_POWER_TRACING_DEPRECATED */ | |
193 | ||
194 | /* | |
195 | * The clock events are used for clock enable/disable and for | |
196 | * clock rate change | |
197 | */ | |
198 | DECLARE_EVENT_CLASS(clock, | |
199 | ||
200 | TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id), | |
201 | ||
202 | TP_ARGS(name, state, cpu_id), | |
203 | ||
204 | TP_STRUCT__entry( | |
205 | __string( name, name ) | |
206 | __field( u64, state ) | |
207 | __field( u64, cpu_id ) | |
208 | ), | |
209 | ||
210 | TP_fast_assign( | |
211 | __assign_str(name, name); | |
212 | __entry->state = state; | |
213 | __entry->cpu_id = cpu_id; | |
214 | ), | |
215 | ||
216 | TP_printk("%s state=%lu cpu_id=%lu", __get_str(name), | |
217 | (unsigned long)__entry->state, (unsigned long)__entry->cpu_id) | |
218 | ); | |
219 | ||
220 | DEFINE_EVENT(clock, clock_enable, | |
221 | ||
222 | TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id), | |
223 | ||
224 | TP_ARGS(name, state, cpu_id) | |
225 | ); | |
226 | ||
227 | DEFINE_EVENT(clock, clock_disable, | |
228 | ||
229 | TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id), | |
230 | ||
231 | TP_ARGS(name, state, cpu_id) | |
232 | ); | |
233 | ||
234 | DEFINE_EVENT(clock, clock_set_rate, | |
235 | ||
236 | TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id), | |
237 | ||
238 | TP_ARGS(name, state, cpu_id) | |
239 | ); | |
240 | ||
241 | /* | |
242 | * The power domain events are used for power domains transitions | |
243 | */ | |
244 | DECLARE_EVENT_CLASS(power_domain, | |
245 | ||
246 | TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id), | |
247 | ||
248 | TP_ARGS(name, state, cpu_id), | |
249 | ||
250 | TP_STRUCT__entry( | |
251 | __string( name, name ) | |
252 | __field( u64, state ) | |
253 | __field( u64, cpu_id ) | |
254 | ), | |
255 | ||
256 | TP_fast_assign( | |
257 | __assign_str(name, name); | |
258 | __entry->state = state; | |
259 | __entry->cpu_id = cpu_id; | |
260 | ), | |
261 | ||
262 | TP_printk("%s state=%lu cpu_id=%lu", __get_str(name), | |
263 | (unsigned long)__entry->state, (unsigned long)__entry->cpu_id) | |
264 | ); | |
265 | ||
266 | DEFINE_EVENT(power_domain, power_domain_target, | |
267 | ||
268 | TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id), | |
269 | ||
270 | TP_ARGS(name, state, cpu_id) | |
271 | ); | |
272 | #endif /* _TRACE_POWER_H */ | |
273 | ||
274 | /* This part must be outside protection */ | |
275 | #include <trace/define_trace.h> |