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