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