Cleanup: Remove toplevel directory from include search path
[lttng-modules.git] / include / instrumentation / events / lttng-module / 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>
7c68b363 10#include <linux/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
AG
61
62#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
3bc29f0a 63LTTNG_TRACEPOINT_EVENT_CLASS(power_wakeup_source,
7c68b363
AG
64
65 TP_PROTO(const char *name, unsigned int state),
66
67 TP_ARGS(name, state),
68
f127e61e
MD
69 TP_FIELDS(
70 ctf_string(name, name)
71 ctf_integer(u64, state, state)
72 )
7c68b363
AG
73)
74
3bc29f0a 75LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_wakeup_source, wakeup_source_activate,
9cf29d3e
MD
76
77 power_wakeup_source_activate,
7c68b363
AG
78
79 TP_PROTO(const char *name, unsigned int state),
80
81 TP_ARGS(name, state)
82)
83
3bc29f0a 84LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_wakeup_source, wakeup_source_deactivate,
9cf29d3e
MD
85
86 power_wakeup_source_deactivate,
7c68b363
AG
87
88 TP_PROTO(const char *name, unsigned int state),
89
90 TP_ARGS(name, state)
91)
92#endif
93
b283666f
PW
94#ifdef CONFIG_EVENT_POWER_TRACING_DEPRECATED
95
96/*
97 * The power events are used for cpuidle & suspend (power_start, power_end)
98 * and for cpufreq (power_frequency)
99 */
3bc29f0a 100LTTNG_TRACEPOINT_EVENT_CLASS(power,
b283666f
PW
101
102 TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id),
103
104 TP_ARGS(type, state, cpu_id),
105
f127e61e
MD
106 TP_FIELDS(
107 ctf_integer(u64, type, type)
108 ctf_integer(u64, state, state)
f127e61e 109 ctf_integer(u64, cpu_id, cpu_id)
f127e61e 110 )
b283666f
PW
111)
112
3bc29f0a 113LTTNG_TRACEPOINT_EVENT_INSTANCE(power, power_start,
b283666f
PW
114
115 TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id),
116
117 TP_ARGS(type, state, cpu_id)
118)
119
3bc29f0a 120LTTNG_TRACEPOINT_EVENT_INSTANCE(power, power_frequency,
b283666f
PW
121
122 TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id),
123
124 TP_ARGS(type, state, cpu_id)
125)
126
3bc29f0a 127LTTNG_TRACEPOINT_EVENT(power_end,
b283666f
PW
128
129 TP_PROTO(unsigned int cpu_id),
130
131 TP_ARGS(cpu_id),
132
f127e61e 133 TP_FIELDS(
f127e61e 134 ctf_integer(u64, cpu_id, cpu_id)
f127e61e 135 )
b283666f
PW
136)
137
138/* Deprecated dummy functions must be protected against multi-declartion */
139#ifndef _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED
140#define _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED
141
142enum {
143 POWER_NONE = 0,
144 POWER_CSTATE = 1,
145 POWER_PSTATE = 2,
146};
147#endif /* _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED */
148
149#else /* CONFIG_EVENT_POWER_TRACING_DEPRECATED */
150
151#ifndef _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED
152#define _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED
153enum {
154 POWER_NONE = 0,
155 POWER_CSTATE = 1,
156 POWER_PSTATE = 2,
157};
158
159/* These dummy declaration have to be ripped out when the deprecated
160 events get removed */
161static inline void trace_power_start(u64 type, u64 state, u64 cpuid) {};
162static inline void trace_power_end(u64 cpuid) {};
7c68b363
AG
163#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
164static inline void trace_power_start_rcuidle(u64 type, u64 state, u64 cpuid) {};
165static inline void trace_power_end_rcuidle(u64 cpuid) {};
166#endif
b283666f
PW
167static inline void trace_power_frequency(u64 type, u64 state, u64 cpuid) {};
168#endif /* _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED */
169
170#endif /* CONFIG_EVENT_POWER_TRACING_DEPRECATED */
171
172/*
173 * The clock events are used for clock enable/disable and for
174 * clock rate change
175 */
3bc29f0a 176LTTNG_TRACEPOINT_EVENT_CLASS(power_clock,
b283666f
PW
177
178 TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
179
180 TP_ARGS(name, state, cpu_id),
181
f127e61e
MD
182 TP_FIELDS(
183 ctf_string(name, name)
184 ctf_integer(u64, state, state)
185 ctf_integer(u64, cpu_id, cpu_id)
186 )
b283666f
PW
187)
188
3bc29f0a 189LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_clock, clock_enable,
9cf29d3e
MD
190
191 power_clock_enable,
b283666f
PW
192
193 TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
194
195 TP_ARGS(name, state, cpu_id)
196)
197
3bc29f0a 198LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_clock, clock_disable,
9cf29d3e
MD
199
200 power_clock_disable,
b283666f
PW
201
202 TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
203
204 TP_ARGS(name, state, cpu_id)
205)
206
3bc29f0a 207LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_clock, clock_set_rate,
9cf29d3e
MD
208
209 power_clock_set_rate,
b283666f
PW
210
211 TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
212
213 TP_ARGS(name, state, cpu_id)
214)
215
216/*
217 * The power domain events are used for power domains transitions
218 */
3bc29f0a 219LTTNG_TRACEPOINT_EVENT_CLASS(power_domain,
b283666f
PW
220
221 TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
222
223 TP_ARGS(name, state, cpu_id),
224
f127e61e
MD
225 TP_FIELDS(
226 ctf_string(name, name)
227 ctf_integer(u64, state, state)
228 ctf_integer(u64, cpu_id, cpu_id)
229 )
b283666f
PW
230)
231
3bc29f0a 232LTTNG_TRACEPOINT_EVENT_INSTANCE(power_domain, power_domain_target,
b283666f
PW
233
234 TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
235
236 TP_ARGS(name, state, cpu_id)
237)
7c68b363 238
3bc29f0a 239#endif /* LTTNG_TRACE_POWER_H */
b283666f
PW
240
241/* This part must be outside protection */
3b4aafcb 242#include <lttng/define_trace.h>
This page took 0.046167 seconds and 4 git commands to generate.