1 // SPDX-FileCopyrightText: 2012 Paul Woegerer <paul_woegerer@mentor.com>
3 // SPDX-License-Identifier: GPL-2.0-only
6 #define TRACE_SYSTEM power
8 #if !defined(LTTNG_TRACE_POWER_H) || defined(TRACE_HEADER_MULTI_READ)
9 #define LTTNG_TRACE_POWER_H
11 #include <lttng/tracepoint-event.h>
12 #include <linux/ktime.h>
13 #include <lttng/kernel-version.h>
15 LTTNG_TRACEPOINT_EVENT_CLASS(power_cpu
,
17 TP_PROTO(unsigned int state
, unsigned int cpu_id
),
19 TP_ARGS(state
, cpu_id
),
22 ctf_integer(u32
, state
, state
)
23 ctf_integer(u32
, cpu_id
, cpu_id
)
27 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_cpu
, cpu_idle
,
31 TP_PROTO(unsigned int state
, unsigned int cpu_id
),
33 TP_ARGS(state
, cpu_id
)
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
40 #define PWR_EVENT_EXIT -1
43 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_cpu
, cpu_frequency
,
47 TP_PROTO(unsigned int frequency
, unsigned int cpu_id
),
49 TP_ARGS(frequency
, cpu_id
)
52 LTTNG_TRACEPOINT_EVENT_MAP(machine_suspend
,
54 power_machine_suspend
,
56 TP_PROTO(unsigned int state
),
61 ctf_integer(u32
, state
, state
)
65 LTTNG_TRACEPOINT_EVENT_CLASS(power_wakeup_source
,
67 TP_PROTO(const char *name
, unsigned int state
),
72 ctf_string(name
, name
)
73 ctf_integer(u64
, state
, state
)
77 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_wakeup_source
, wakeup_source_activate
,
79 power_wakeup_source_activate
,
81 TP_PROTO(const char *name
, unsigned int state
),
86 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_wakeup_source
, wakeup_source_deactivate
,
88 power_wakeup_source_deactivate
,
90 TP_PROTO(const char *name
, unsigned int state
),
95 #ifdef CONFIG_EVENT_POWER_TRACING_DEPRECATED
98 * The power events are used for cpuidle & suspend (power_start, power_end)
99 * and for cpufreq (power_frequency)
101 LTTNG_TRACEPOINT_EVENT_CLASS(power
,
103 TP_PROTO(unsigned int type
, unsigned int state
, unsigned int cpu_id
),
105 TP_ARGS(type
, state
, cpu_id
),
108 ctf_integer(u64
, type
, type
)
109 ctf_integer(u64
, state
, state
)
110 ctf_integer(u64
, cpu_id
, cpu_id
)
114 LTTNG_TRACEPOINT_EVENT_INSTANCE(power
, power_start
,
116 TP_PROTO(unsigned int type
, unsigned int state
, unsigned int cpu_id
),
118 TP_ARGS(type
, state
, cpu_id
)
121 LTTNG_TRACEPOINT_EVENT_INSTANCE(power
, power_frequency
,
123 TP_PROTO(unsigned int type
, unsigned int state
, unsigned int cpu_id
),
125 TP_ARGS(type
, state
, cpu_id
)
128 LTTNG_TRACEPOINT_EVENT(power_end
,
130 TP_PROTO(unsigned int cpu_id
),
135 ctf_integer(u64
, cpu_id
, cpu_id
)
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
148 #endif /* _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED */
150 #else /* CONFIG_EVENT_POWER_TRACING_DEPRECATED */
152 #ifndef _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED
153 #define _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED
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
) {};
164 static inline void trace_power_start_rcuidle(u64 type
, u64 state
, u64 cpuid
) {};
165 static inline void trace_power_end_rcuidle(u64 cpuid
) {};
166 static inline void trace_power_frequency(u64 type
, u64 state
, u64 cpuid
) {};
167 #endif /* _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED */
169 #endif /* CONFIG_EVENT_POWER_TRACING_DEPRECATED */
172 * The clock events are used for clock enable/disable and for
175 LTTNG_TRACEPOINT_EVENT_CLASS(power_clock
,
177 TP_PROTO(const char *name
, unsigned int state
, unsigned int cpu_id
),
179 TP_ARGS(name
, state
, cpu_id
),
182 ctf_string(name
, name
)
183 ctf_integer(u64
, state
, state
)
184 ctf_integer(u64
, cpu_id
, cpu_id
)
188 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_clock
, clock_enable
,
192 TP_PROTO(const char *name
, unsigned int state
, unsigned int cpu_id
),
194 TP_ARGS(name
, state
, cpu_id
)
197 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_clock
, clock_disable
,
201 TP_PROTO(const char *name
, unsigned int state
, unsigned int cpu_id
),
203 TP_ARGS(name
, state
, cpu_id
)
206 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_clock
, clock_set_rate
,
208 power_clock_set_rate
,
210 TP_PROTO(const char *name
, unsigned int state
, unsigned int cpu_id
),
212 TP_ARGS(name
, state
, cpu_id
)
216 * The power domain events are used for power domains transitions
218 LTTNG_TRACEPOINT_EVENT_CLASS(power_domain
,
220 TP_PROTO(const char *name
, unsigned int state
, unsigned int cpu_id
),
222 TP_ARGS(name
, state
, cpu_id
),
225 ctf_string(name
, name
)
226 ctf_integer(u64
, state
, state
)
227 ctf_integer(u64
, cpu_id
, cpu_id
)
231 LTTNG_TRACEPOINT_EVENT_INSTANCE(power_domain
, power_domain_target
,
233 TP_PROTO(const char *name
, unsigned int state
, unsigned int cpu_id
),
235 TP_ARGS(name
, state
, cpu_id
)
238 #endif /* LTTNG_TRACE_POWER_H */
240 /* This part must be outside protection */
241 #include <lttng/define_trace.h>