Commit | Line | Data |
---|---|---|
b7cdc182 | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
b283666f PW |
2 | #undef TRACE_SYSTEM |
3 | #define TRACE_SYSTEM power | |
4 | ||
3bc29f0a MD |
5 | #if !defined(LTTNG_TRACE_POWER_H) || defined(TRACE_HEADER_MULTI_READ) |
6 | #define LTTNG_TRACE_POWER_H | |
b283666f | 7 | |
3b4aafcb | 8 | #include <lttng/tracepoint-event.h> |
b283666f | 9 | #include <linux/ktime.h> |
5f4c791e | 10 | #include <lttng/kernel-version.h> |
b283666f | 11 | |
3bc29f0a | 12 | LTTNG_TRACEPOINT_EVENT_CLASS(power_cpu, |
b283666f PW |
13 | |
14 | TP_PROTO(unsigned int state, unsigned int cpu_id), | |
15 | ||
16 | TP_ARGS(state, cpu_id), | |
17 | ||
f127e61e MD |
18 | TP_FIELDS( |
19 | ctf_integer(u32, state, state) | |
20 | ctf_integer(u32, cpu_id, cpu_id) | |
21 | ) | |
b283666f PW |
22 | ) |
23 | ||
3bc29f0a | 24 | LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_cpu, cpu_idle, |
9cf29d3e MD |
25 | |
26 | power_cpu_idle, | |
b283666f PW |
27 | |
28 | TP_PROTO(unsigned int state, unsigned int cpu_id), | |
29 | ||
30 | TP_ARGS(state, cpu_id) | |
31 | ) | |
32 | ||
33 | /* This file can get included multiple times, TRACE_HEADER_MULTI_READ at top */ | |
34 | #ifndef _PWR_EVENT_AVOID_DOUBLE_DEFINING | |
35 | #define _PWR_EVENT_AVOID_DOUBLE_DEFINING | |
36 | ||
37 | #define PWR_EVENT_EXIT -1 | |
38 | #endif | |
39 | ||
3bc29f0a | 40 | LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_cpu, cpu_frequency, |
9cf29d3e MD |
41 | |
42 | power_cpu_frequency, | |
b283666f PW |
43 | |
44 | TP_PROTO(unsigned int frequency, unsigned int cpu_id), | |
45 | ||
46 | TP_ARGS(frequency, cpu_id) | |
47 | ) | |
48 | ||
3bc29f0a | 49 | LTTNG_TRACEPOINT_EVENT_MAP(machine_suspend, |
9cf29d3e MD |
50 | |
51 | power_machine_suspend, | |
b283666f PW |
52 | |
53 | TP_PROTO(unsigned int state), | |
54 | ||
55 | TP_ARGS(state), | |
56 | ||
f127e61e MD |
57 | TP_FIELDS( |
58 | ctf_integer(u32, state, state) | |
59 | ) | |
b283666f | 60 | ) |
7c68b363 | 61 | |
3bc29f0a | 62 | LTTNG_TRACEPOINT_EVENT_CLASS(power_wakeup_source, |
7c68b363 AG |
63 | |
64 | TP_PROTO(const char *name, unsigned int state), | |
65 | ||
66 | TP_ARGS(name, state), | |
67 | ||
f127e61e MD |
68 | TP_FIELDS( |
69 | ctf_string(name, name) | |
70 | ctf_integer(u64, state, state) | |
71 | ) | |
7c68b363 AG |
72 | ) |
73 | ||
3bc29f0a | 74 | LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_wakeup_source, wakeup_source_activate, |
9cf29d3e MD |
75 | |
76 | power_wakeup_source_activate, | |
7c68b363 AG |
77 | |
78 | TP_PROTO(const char *name, unsigned int state), | |
79 | ||
80 | TP_ARGS(name, state) | |
81 | ) | |
82 | ||
3bc29f0a | 83 | LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_wakeup_source, wakeup_source_deactivate, |
9cf29d3e MD |
84 | |
85 | power_wakeup_source_deactivate, | |
7c68b363 AG |
86 | |
87 | TP_PROTO(const char *name, unsigned int state), | |
88 | ||
89 | TP_ARGS(name, state) | |
90 | ) | |
7c68b363 | 91 | |
b283666f PW |
92 | #ifdef CONFIG_EVENT_POWER_TRACING_DEPRECATED |
93 | ||
94 | /* | |
95 | * The power events are used for cpuidle & suspend (power_start, power_end) | |
96 | * and for cpufreq (power_frequency) | |
97 | */ | |
3bc29f0a | 98 | LTTNG_TRACEPOINT_EVENT_CLASS(power, |
b283666f PW |
99 | |
100 | TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id), | |
101 | ||
102 | TP_ARGS(type, state, cpu_id), | |
103 | ||
f127e61e MD |
104 | TP_FIELDS( |
105 | ctf_integer(u64, type, type) | |
106 | ctf_integer(u64, state, state) | |
f127e61e | 107 | ctf_integer(u64, cpu_id, cpu_id) |
f127e61e | 108 | ) |
b283666f PW |
109 | ) |
110 | ||
3bc29f0a | 111 | LTTNG_TRACEPOINT_EVENT_INSTANCE(power, power_start, |
b283666f PW |
112 | |
113 | TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id), | |
114 | ||
115 | TP_ARGS(type, state, cpu_id) | |
116 | ) | |
117 | ||
3bc29f0a | 118 | LTTNG_TRACEPOINT_EVENT_INSTANCE(power, power_frequency, |
b283666f PW |
119 | |
120 | TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id), | |
121 | ||
122 | TP_ARGS(type, state, cpu_id) | |
123 | ) | |
124 | ||
3bc29f0a | 125 | LTTNG_TRACEPOINT_EVENT(power_end, |
b283666f PW |
126 | |
127 | TP_PROTO(unsigned int cpu_id), | |
128 | ||
129 | TP_ARGS(cpu_id), | |
130 | ||
f127e61e | 131 | TP_FIELDS( |
f127e61e | 132 | ctf_integer(u64, cpu_id, cpu_id) |
f127e61e | 133 | ) |
b283666f PW |
134 | ) |
135 | ||
136 | /* Deprecated dummy functions must be protected against multi-declartion */ | |
137 | #ifndef _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED | |
138 | #define _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED | |
139 | ||
140 | enum { | |
141 | POWER_NONE = 0, | |
142 | POWER_CSTATE = 1, | |
143 | POWER_PSTATE = 2, | |
144 | }; | |
145 | #endif /* _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED */ | |
146 | ||
147 | #else /* CONFIG_EVENT_POWER_TRACING_DEPRECATED */ | |
148 | ||
149 | #ifndef _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED | |
150 | #define _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED | |
151 | enum { | |
152 | POWER_NONE = 0, | |
153 | POWER_CSTATE = 1, | |
154 | POWER_PSTATE = 2, | |
155 | }; | |
156 | ||
157 | /* These dummy declaration have to be ripped out when the deprecated | |
158 | events get removed */ | |
159 | static inline void trace_power_start(u64 type, u64 state, u64 cpuid) {}; | |
160 | static inline void trace_power_end(u64 cpuid) {}; | |
7c68b363 AG |
161 | static inline void trace_power_start_rcuidle(u64 type, u64 state, u64 cpuid) {}; |
162 | static inline void trace_power_end_rcuidle(u64 cpuid) {}; | |
b283666f PW |
163 | static inline void trace_power_frequency(u64 type, u64 state, u64 cpuid) {}; |
164 | #endif /* _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED */ | |
165 | ||
166 | #endif /* CONFIG_EVENT_POWER_TRACING_DEPRECATED */ | |
167 | ||
168 | /* | |
169 | * The clock events are used for clock enable/disable and for | |
170 | * clock rate change | |
171 | */ | |
3bc29f0a | 172 | LTTNG_TRACEPOINT_EVENT_CLASS(power_clock, |
b283666f PW |
173 | |
174 | TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id), | |
175 | ||
176 | TP_ARGS(name, state, cpu_id), | |
177 | ||
f127e61e MD |
178 | TP_FIELDS( |
179 | ctf_string(name, name) | |
180 | ctf_integer(u64, state, state) | |
181 | ctf_integer(u64, cpu_id, cpu_id) | |
182 | ) | |
b283666f PW |
183 | ) |
184 | ||
3bc29f0a | 185 | LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_clock, clock_enable, |
9cf29d3e MD |
186 | |
187 | power_clock_enable, | |
b283666f PW |
188 | |
189 | TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id), | |
190 | ||
191 | TP_ARGS(name, state, cpu_id) | |
192 | ) | |
193 | ||
3bc29f0a | 194 | LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_clock, clock_disable, |
9cf29d3e MD |
195 | |
196 | power_clock_disable, | |
b283666f PW |
197 | |
198 | TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id), | |
199 | ||
200 | TP_ARGS(name, state, cpu_id) | |
201 | ) | |
202 | ||
3bc29f0a | 203 | LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_clock, clock_set_rate, |
9cf29d3e MD |
204 | |
205 | power_clock_set_rate, | |
b283666f PW |
206 | |
207 | TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id), | |
208 | ||
209 | TP_ARGS(name, state, cpu_id) | |
210 | ) | |
211 | ||
212 | /* | |
213 | * The power domain events are used for power domains transitions | |
214 | */ | |
3bc29f0a | 215 | LTTNG_TRACEPOINT_EVENT_CLASS(power_domain, |
b283666f PW |
216 | |
217 | TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id), | |
218 | ||
219 | TP_ARGS(name, state, cpu_id), | |
220 | ||
f127e61e MD |
221 | TP_FIELDS( |
222 | ctf_string(name, name) | |
223 | ctf_integer(u64, state, state) | |
224 | ctf_integer(u64, cpu_id, cpu_id) | |
225 | ) | |
b283666f PW |
226 | ) |
227 | ||
3bc29f0a | 228 | LTTNG_TRACEPOINT_EVENT_INSTANCE(power_domain, power_domain_target, |
b283666f PW |
229 | |
230 | TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id), | |
231 | ||
232 | TP_ARGS(name, state, cpu_id) | |
233 | ) | |
7c68b363 | 234 | |
3bc29f0a | 235 | #endif /* LTTNG_TRACE_POWER_H */ |
b283666f PW |
236 | |
237 | /* This part must be outside protection */ | |
3b4aafcb | 238 | #include <lttng/define_trace.h> |