Drop support for kernels < 4.4 from power instrumentation
[lttng-modules.git] / include / instrumentation / events / power.h
CommitLineData
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 12LTTNG_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 24LTTNG_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 40LTTNG_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 49LTTNG_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 62LTTNG_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 74LTTNG_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 83LTTNG_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 98LTTNG_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 111LTTNG_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 118LTTNG_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 125LTTNG_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
140enum {
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
151enum {
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 */
159static inline void trace_power_start(u64 type, u64 state, u64 cpuid) {};
160static inline void trace_power_end(u64 cpuid) {};
7c68b363
AG
161static inline void trace_power_start_rcuidle(u64 type, u64 state, u64 cpuid) {};
162static inline void trace_power_end_rcuidle(u64 cpuid) {};
b283666f
PW
163static 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 172LTTNG_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 185LTTNG_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 194LTTNG_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 203LTTNG_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 215LTTNG_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 228LTTNG_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>
This page took 0.069189 seconds and 4 git commands to generate.