1 /* SPDX-License-Identifier: GPL-2.0-only */
3 #define TRACE_SYSTEM power
5 #if !defined(LTTNG_TRACE_POWER_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define LTTNG_TRACE_POWER_H
8 #include <lttng/tracepoint-event.h>
9 #include <linux/ktime.h>
10 #include <lttng/kernel-version.h>
12 LTTNG_TRACEPOINT_EVENT_CLASS(power_cpu
,
14 TP_PROTO(unsigned int state
, unsigned int cpu_id
),
16 TP_ARGS(state
, cpu_id
),
19 ctf_integer(u32
, state
, state
)
20 ctf_integer(u32
, cpu_id
, cpu_id
)
24 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_cpu
, cpu_idle
,
28 TP_PROTO(unsigned int state
, unsigned int cpu_id
),
30 TP_ARGS(state
, cpu_id
)
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
37 #define PWR_EVENT_EXIT -1
40 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_cpu
, cpu_frequency
,
44 TP_PROTO(unsigned int frequency
, unsigned int cpu_id
),
46 TP_ARGS(frequency
, cpu_id
)
49 LTTNG_TRACEPOINT_EVENT_MAP(machine_suspend
,
51 power_machine_suspend
,
53 TP_PROTO(unsigned int state
),
58 ctf_integer(u32
, state
, state
)
62 LTTNG_TRACEPOINT_EVENT_CLASS(power_wakeup_source
,
64 TP_PROTO(const char *name
, unsigned int state
),
69 ctf_string(name
, name
)
70 ctf_integer(u64
, state
, state
)
74 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_wakeup_source
, wakeup_source_activate
,
76 power_wakeup_source_activate
,
78 TP_PROTO(const char *name
, unsigned int state
),
83 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_wakeup_source
, wakeup_source_deactivate
,
85 power_wakeup_source_deactivate
,
87 TP_PROTO(const char *name
, unsigned int state
),
92 #ifdef CONFIG_EVENT_POWER_TRACING_DEPRECATED
95 * The power events are used for cpuidle & suspend (power_start, power_end)
96 * and for cpufreq (power_frequency)
98 LTTNG_TRACEPOINT_EVENT_CLASS(power
,
100 TP_PROTO(unsigned int type
, unsigned int state
, unsigned int cpu_id
),
102 TP_ARGS(type
, state
, cpu_id
),
105 ctf_integer(u64
, type
, type
)
106 ctf_integer(u64
, state
, state
)
107 ctf_integer(u64
, cpu_id
, cpu_id
)
111 LTTNG_TRACEPOINT_EVENT_INSTANCE(power
, power_start
,
113 TP_PROTO(unsigned int type
, unsigned int state
, unsigned int cpu_id
),
115 TP_ARGS(type
, state
, cpu_id
)
118 LTTNG_TRACEPOINT_EVENT_INSTANCE(power
, power_frequency
,
120 TP_PROTO(unsigned int type
, unsigned int state
, unsigned int cpu_id
),
122 TP_ARGS(type
, state
, cpu_id
)
125 LTTNG_TRACEPOINT_EVENT(power_end
,
127 TP_PROTO(unsigned int cpu_id
),
132 ctf_integer(u64
, cpu_id
, cpu_id
)
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
145 #endif /* _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED */
147 #else /* CONFIG_EVENT_POWER_TRACING_DEPRECATED */
149 #ifndef _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED
150 #define _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED
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
) {};
161 static inline void trace_power_start_rcuidle(u64 type
, u64 state
, u64 cpuid
) {};
162 static inline void trace_power_end_rcuidle(u64 cpuid
) {};
163 static inline void trace_power_frequency(u64 type
, u64 state
, u64 cpuid
) {};
164 #endif /* _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED */
166 #endif /* CONFIG_EVENT_POWER_TRACING_DEPRECATED */
169 * The clock events are used for clock enable/disable and for
172 LTTNG_TRACEPOINT_EVENT_CLASS(power_clock
,
174 TP_PROTO(const char *name
, unsigned int state
, unsigned int cpu_id
),
176 TP_ARGS(name
, state
, cpu_id
),
179 ctf_string(name
, name
)
180 ctf_integer(u64
, state
, state
)
181 ctf_integer(u64
, cpu_id
, cpu_id
)
185 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_clock
, clock_enable
,
189 TP_PROTO(const char *name
, unsigned int state
, unsigned int cpu_id
),
191 TP_ARGS(name
, state
, cpu_id
)
194 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_clock
, clock_disable
,
198 TP_PROTO(const char *name
, unsigned int state
, unsigned int cpu_id
),
200 TP_ARGS(name
, state
, cpu_id
)
203 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_clock
, clock_set_rate
,
205 power_clock_set_rate
,
207 TP_PROTO(const char *name
, unsigned int state
, unsigned int cpu_id
),
209 TP_ARGS(name
, state
, cpu_id
)
213 * The power domain events are used for power domains transitions
215 LTTNG_TRACEPOINT_EVENT_CLASS(power_domain
,
217 TP_PROTO(const char *name
, unsigned int state
, unsigned int cpu_id
),
219 TP_ARGS(name
, state
, cpu_id
),
222 ctf_string(name
, name
)
223 ctf_integer(u64
, state
, state
)
224 ctf_integer(u64
, cpu_id
, cpu_id
)
228 LTTNG_TRACEPOINT_EVENT_INSTANCE(power_domain
, power_domain_target
,
230 TP_PROTO(const char *name
, unsigned int state
, unsigned int cpu_id
),
232 TP_ARGS(name
, state
, cpu_id
)
235 #endif /* LTTNG_TRACE_POWER_H */
237 /* This part must be outside protection */
238 #include <lttng/define_trace.h>