Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
  1/* SPDX-License-Identifier: GPL-2.0-only */
  2
  3#undef TRACE_SYSTEM
  4#define TRACE_SYSTEM timer_migration
  5
  6#if !defined(_TRACE_TIMER_MIGRATION_H) || defined(TRACE_HEADER_MULTI_READ)
  7#define _TRACE_TIMER_MIGRATION_H
  8
  9#include <linux/tracepoint.h>
 10
 11/* Group events */
 12TRACE_EVENT(tmigr_group_set,
 13
 14	TP_PROTO(struct tmigr_group *group),
 15
 16	TP_ARGS(group),
 17
 18	TP_STRUCT__entry(
 19		__field( void *,	group		)
 20		__field( unsigned int,	lvl		)
 21		__field( unsigned int,	numa_node	)
 22	),
 23
 24	TP_fast_assign(
 25		__entry->group		= group;
 26		__entry->lvl		= group->level;
 27		__entry->numa_node	= group->numa_node;
 28	),
 29
 30	TP_printk("group=%p lvl=%d numa=%d",
 31		  __entry->group, __entry->lvl, __entry->numa_node)
 32);
 33
 34TRACE_EVENT(tmigr_connect_child_parent,
 35
 36	TP_PROTO(struct tmigr_group *child),
 37
 38	TP_ARGS(child),
 39
 40	TP_STRUCT__entry(
 41		__field( void *,	child		)
 42		__field( void *,	parent		)
 43		__field( unsigned int,	lvl		)
 44		__field( unsigned int,	numa_node	)
 45		__field( unsigned int,	num_children	)
 46		__field( u32,		groupmask	)
 47	),
 48
 49	TP_fast_assign(
 50		__entry->child		= child;
 51		__entry->parent		= child->parent;
 52		__entry->lvl		= child->parent->level;
 53		__entry->numa_node	= child->parent->numa_node;
 54		__entry->num_children	= child->parent->num_children;
 55		__entry->groupmask	= child->groupmask;
 56	),
 57
 58	TP_printk("group=%p groupmask=%0x parent=%p lvl=%d numa=%d num_children=%d",
 59		  __entry->child,  __entry->groupmask, __entry->parent,
 60		  __entry->lvl, __entry->numa_node, __entry->num_children)
 61);
 62
 63TRACE_EVENT(tmigr_connect_cpu_parent,
 64
 65	TP_PROTO(struct tmigr_cpu *tmc),
 66
 67	TP_ARGS(tmc),
 68
 69	TP_STRUCT__entry(
 70		__field( void *,	parent		)
 71		__field( unsigned int,	cpu		)
 72		__field( unsigned int,	lvl		)
 73		__field( unsigned int,	numa_node	)
 74		__field( unsigned int,	num_children	)
 75		__field( u32,		groupmask	)
 76	),
 77
 78	TP_fast_assign(
 79		__entry->parent		= tmc->tmgroup;
 80		__entry->cpu		= tmc->cpuevt.cpu;
 81		__entry->lvl		= tmc->tmgroup->level;
 82		__entry->numa_node	= tmc->tmgroup->numa_node;
 83		__entry->num_children	= tmc->tmgroup->num_children;
 84		__entry->groupmask	= tmc->groupmask;
 85	),
 86
 87	TP_printk("cpu=%d groupmask=%0x parent=%p lvl=%d numa=%d num_children=%d",
 88		  __entry->cpu,	 __entry->groupmask, __entry->parent,
 89		  __entry->lvl, __entry->numa_node, __entry->num_children)
 90);
 91
 92DECLARE_EVENT_CLASS(tmigr_group_and_cpu,
 93
 94	TP_PROTO(struct tmigr_group *group, union tmigr_state state, u32 childmask),
 95
 96	TP_ARGS(group, state, childmask),
 97
 98	TP_STRUCT__entry(
 99		__field( void *,	group		)
100		__field( void *,	parent		)
101		__field( unsigned int,	lvl		)
102		__field( unsigned int,	numa_node	)
103		__field( u32,		childmask	)
104		__field( u8,		active		)
105		__field( u8,		migrator	)
106	),
107
108	TP_fast_assign(
109		__entry->group		= group;
110		__entry->parent		= group->parent;
111		__entry->lvl		= group->level;
112		__entry->numa_node	= group->numa_node;
113		__entry->childmask	= childmask;
114		__entry->active		= state.active;
115		__entry->migrator	= state.migrator;
116	),
117
118	TP_printk("group=%p lvl=%d numa=%d active=%0x migrator=%0x "
119		  "parent=%p childmask=%0x",
120		  __entry->group, __entry->lvl, __entry->numa_node,
121		  __entry->active, __entry->migrator,
122		  __entry->parent, __entry->childmask)
123);
124
125DEFINE_EVENT(tmigr_group_and_cpu, tmigr_group_set_cpu_inactive,
126
127	TP_PROTO(struct tmigr_group *group, union tmigr_state state, u32 childmask),
128
129	TP_ARGS(group, state, childmask)
130);
131
132DEFINE_EVENT(tmigr_group_and_cpu, tmigr_group_set_cpu_active,
133
134	TP_PROTO(struct tmigr_group *group, union tmigr_state state, u32 childmask),
135
136	TP_ARGS(group, state, childmask)
137);
138
139/* CPU events*/
140DECLARE_EVENT_CLASS(tmigr_cpugroup,
141
142	TP_PROTO(struct tmigr_cpu *tmc),
143
144	TP_ARGS(tmc),
145
146	TP_STRUCT__entry(
147		__field( u64,		wakeup	)
148		__field( void *,	parent	)
149		__field( unsigned int,	cpu	)
150
151	),
152
153	TP_fast_assign(
154		__entry->wakeup		= tmc->wakeup;
155		__entry->parent		= tmc->tmgroup;
156		__entry->cpu		= tmc->cpuevt.cpu;
157	),
158
159	TP_printk("cpu=%d parent=%p wakeup=%llu", __entry->cpu, __entry->parent, __entry->wakeup)
160);
161
162DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_new_timer,
163
164	TP_PROTO(struct tmigr_cpu *tmc),
165
166	TP_ARGS(tmc)
167);
168
169DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_active,
170
171	TP_PROTO(struct tmigr_cpu *tmc),
172
173	TP_ARGS(tmc)
174);
175
176DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_online,
177
178	TP_PROTO(struct tmigr_cpu *tmc),
179
180	TP_ARGS(tmc)
181);
182
183DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_offline,
184
185	TP_PROTO(struct tmigr_cpu *tmc),
186
187	TP_ARGS(tmc)
188);
189
190DEFINE_EVENT(tmigr_cpugroup, tmigr_handle_remote_cpu,
191
192	TP_PROTO(struct tmigr_cpu *tmc),
193
194	TP_ARGS(tmc)
195);
196
197DECLARE_EVENT_CLASS(tmigr_idle,
198
199	TP_PROTO(struct tmigr_cpu *tmc, u64 nextevt),
200
201	TP_ARGS(tmc, nextevt),
202
203	TP_STRUCT__entry(
204		__field( u64,		nextevt)
205		__field( u64,		wakeup)
206		__field( void *,	parent)
207		__field( unsigned int,	cpu)
208	),
209
210	TP_fast_assign(
211		__entry->nextevt	= nextevt;
212		__entry->wakeup		= tmc->wakeup;
213		__entry->parent		= tmc->tmgroup;
214		__entry->cpu		= tmc->cpuevt.cpu;
215	),
216
217	TP_printk("cpu=%d parent=%p nextevt=%llu wakeup=%llu",
218		  __entry->cpu, __entry->parent, __entry->nextevt, __entry->wakeup)
219);
220
221DEFINE_EVENT(tmigr_idle, tmigr_cpu_idle,
222
223	TP_PROTO(struct tmigr_cpu *tmc, u64 nextevt),
224
225	TP_ARGS(tmc, nextevt)
226);
227
228DEFINE_EVENT(tmigr_idle, tmigr_cpu_new_timer_idle,
229
230	TP_PROTO(struct tmigr_cpu *tmc, u64 nextevt),
231
232	TP_ARGS(tmc, nextevt)
233);
234
235TRACE_EVENT(tmigr_update_events,
236
237	TP_PROTO(struct tmigr_group *child, struct tmigr_group *group,
238		 union tmigr_state childstate,	union tmigr_state groupstate,
239		 u64 nextevt),
240
241	TP_ARGS(child, group, childstate, groupstate, nextevt),
242
243	TP_STRUCT__entry(
244		__field( void *,	child			)
245		__field( void *,	group			)
246		__field( u64,		nextevt			)
247		__field( u64,		group_next_expiry	)
248		__field( u64,		child_evt_expiry	)
249		__field( unsigned int,	group_lvl		)
250		__field( unsigned int,	child_evtcpu		)
251		__field( u8,		child_active		)
252		__field( u8,		group_active		)
253	),
254
255	TP_fast_assign(
256		__entry->child			= child;
257		__entry->group			= group;
258		__entry->nextevt		= nextevt;
259		__entry->group_next_expiry	= group->next_expiry;
260		__entry->child_evt_expiry	= child ? child->groupevt.nextevt.expires : 0;
261		__entry->group_lvl		= group->level;
262		__entry->child_evtcpu		= child ? child->groupevt.cpu : 0;
263		__entry->child_active		= childstate.active;
264		__entry->group_active		= groupstate.active;
265	),
266
267	TP_printk("child=%p group=%p group_lvl=%d child_active=%0x group_active=%0x "
268		  "nextevt=%llu next_expiry=%llu child_evt_expiry=%llu child_evtcpu=%d",
269		  __entry->child, __entry->group, __entry->group_lvl, __entry->child_active,
270		  __entry->group_active,
271		  __entry->nextevt, __entry->group_next_expiry, __entry->child_evt_expiry,
272		  __entry->child_evtcpu)
273);
274
275TRACE_EVENT(tmigr_handle_remote,
276
277	TP_PROTO(struct tmigr_group *group),
278
279	TP_ARGS(group),
280
281	TP_STRUCT__entry(
282		__field( void * ,	group	)
283		__field( unsigned int ,	lvl	)
284	),
285
286	TP_fast_assign(
287		__entry->group		= group;
288		__entry->lvl		= group->level;
289	),
290
291	TP_printk("group=%p lvl=%d",
292		   __entry->group, __entry->lvl)
293);
294
295#endif /*  _TRACE_TIMER_MIGRATION_H */
296
297/* This part must be outside protection */
298#include <trace/define_trace.h>