File Index
Files and directories
Sign in
FILE

osnoise.h

File preview with syntax highlighting.

linux-6.19.14/include/trace/events/osnoise.h C
  1/* SPDX-License-Identifier: GPL-2.0 */
  2#undef TRACE_SYSTEM
  3#define TRACE_SYSTEM osnoise
  4
  5#if !defined(_OSNOISE_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
  6
  7#ifndef _OSNOISE_TRACE_H
  8#define _OSNOISE_TRACE_H
  9/*
 10 * osnoise sample structure definition. Used to store the statistics of a
 11 * sample run.
 12 */
 13struct osnoise_sample {
 14	u64			runtime;	/* runtime */
 15	u64			noise;		/* noise */
 16	u64			max_sample;	/* max single noise sample */
 17	int			hw_count;	/* # HW (incl. hypervisor) interference */
 18	int			nmi_count;	/* # NMIs during this sample */
 19	int			irq_count;	/* # IRQs during this sample */
 20	int			softirq_count;	/* # softirqs during this sample */
 21	int			thread_count;	/* # threads during this sample */
 22};
 23
 24#ifdef CONFIG_TIMERLAT_TRACER
 25/*
 26 * timerlat sample structure definition. Used to store the statistics of
 27 * a sample run.
 28 */
 29struct timerlat_sample {
 30	u64			timer_latency;	/* timer_latency */
 31	unsigned int		seqnum;		/* unique sequence */
 32	int			context;	/* timer context */
 33};
 34#endif // CONFIG_TIMERLAT_TRACER
 35#endif // _OSNOISE_TRACE_H
 36
 37#include <linux/tracepoint.h>
 38TRACE_EVENT(osnoise_sample,
 39
 40	TP_PROTO(struct osnoise_sample *s),
 41
 42	TP_ARGS(s),
 43
 44	TP_STRUCT__entry(
 45		__field(	u64,		runtime	)
 46		__field(	u64,		noise	)
 47		__field(	u64,		max_sample	)
 48		__field(	int,		hw_count	)
 49		__field(	int,		irq_count	)
 50		__field(	int,		nmi_count	)
 51		__field(	int, 		softirq_count	)
 52		__field(	int,		thread_count	)
 53	),
 54
 55	TP_fast_assign(
 56		__entry->runtime = s->runtime;
 57		__entry->noise = s->noise;
 58		__entry->max_sample = s->max_sample;
 59		__entry->hw_count = s->hw_count;
 60		__entry->irq_count = s->irq_count;
 61		__entry->nmi_count = s->nmi_count;
 62		__entry->softirq_count = s->softirq_count;
 63		__entry->thread_count = s->thread_count;
 64	),
 65
 66	TP_printk("runtime=%llu noise=%llu max_sample=%llu hw_count=%d"
 67		  " irq_count=%d nmi_count=%d softirq_count=%d"
 68		  " thread_count=%d",
 69		  __entry->runtime,
 70		  __entry->noise,
 71		  __entry->max_sample,
 72		  __entry->hw_count,
 73		  __entry->irq_count,
 74		  __entry->nmi_count,
 75		  __entry->softirq_count,
 76		  __entry->thread_count)
 77);
 78
 79#ifdef CONFIG_TIMERLAT_TRACER
 80TRACE_EVENT(timerlat_sample,
 81
 82	TP_PROTO(struct timerlat_sample *s),
 83
 84	TP_ARGS(s),
 85
 86	TP_STRUCT__entry(
 87		__field(	u64,		timer_latency	)
 88		__field(	unsigned int,	seqnum		)
 89		__field(	int,		context		)
 90	),
 91
 92	TP_fast_assign(
 93		__entry->timer_latency = s->timer_latency;
 94		__entry->seqnum = s->seqnum;
 95		__entry->context = s->context;
 96	),
 97
 98	TP_printk("timer_latency=%llu seqnum=%u context=%d",
 99		  __entry->timer_latency,
100		  __entry->seqnum,
101		  __entry->context)
102);
103#endif // CONFIG_TIMERLAT_TRACER
104
105TRACE_EVENT(thread_noise,
106
107	TP_PROTO(struct task_struct *t, u64 start, u64 duration),
108
109	TP_ARGS(t, start, duration),
110
111	TP_STRUCT__entry(
112		__array(	char,		comm,	TASK_COMM_LEN)
113		__field(	u64,		start	)
114		__field(	u64,		duration)
115		__field(	pid_t,		pid	)
116	),
117
118	TP_fast_assign(
119		memcpy(__entry->comm, t->comm, TASK_COMM_LEN);
120		__entry->pid = t->pid;
121		__entry->start = start;
122		__entry->duration = duration;
123	),
124
125	TP_printk("%8s:%d start %llu.%09u duration %llu ns",
126		__entry->comm,
127		__entry->pid,
128		__print_ns_to_secs(__entry->start),
129		__print_ns_without_secs(__entry->start),
130		__entry->duration)
131);
132
133TRACE_EVENT(softirq_noise,
134
135	TP_PROTO(int vector, u64 start, u64 duration),
136
137	TP_ARGS(vector, start, duration),
138
139	TP_STRUCT__entry(
140		__field(	u64,		start	)
141		__field(	u64,		duration)
142		__field(	int,		vector	)
143	),
144
145	TP_fast_assign(
146		__entry->vector = vector;
147		__entry->start = start;
148		__entry->duration = duration;
149	),
150
151	TP_printk("%8s:%d start %llu.%09u duration %llu ns",
152		show_softirq_name(__entry->vector),
153		__entry->vector,
154		__print_ns_to_secs(__entry->start),
155		__print_ns_without_secs(__entry->start),
156		__entry->duration)
157);
158
159TRACE_EVENT(irq_noise,
160
161	TP_PROTO(int vector, const char *desc, u64 start, u64 duration),
162
163	TP_ARGS(vector, desc, start, duration),
164
165	TP_STRUCT__entry(
166		__field(	u64,		start	)
167		__field(	u64,		duration)
168		__string(	desc,		desc    )
169		__field(	int,		vector	)
170
171	),
172
173	TP_fast_assign(
174		__assign_str(desc);
175		__entry->vector = vector;
176		__entry->start = start;
177		__entry->duration = duration;
178	),
179
180	TP_printk("%s:%d start %llu.%09u duration %llu ns",
181		__get_str(desc),
182		__entry->vector,
183		__print_ns_to_secs(__entry->start),
184		__print_ns_without_secs(__entry->start),
185		__entry->duration)
186);
187
188TRACE_EVENT(nmi_noise,
189
190	TP_PROTO(u64 start, u64 duration),
191
192	TP_ARGS(start, duration),
193
194	TP_STRUCT__entry(
195		__field(	u64,		start	)
196		__field(	u64,		duration)
197	),
198
199	TP_fast_assign(
200		__entry->start = start;
201		__entry->duration = duration;
202	),
203
204	TP_printk("start %llu.%09u duration %llu ns",
205		__print_ns_to_secs(__entry->start),
206		__print_ns_without_secs(__entry->start),
207		__entry->duration)
208);
209
210TRACE_EVENT(sample_threshold,
211
212	TP_PROTO(u64 start, u64 duration, u64 interference),
213
214	TP_ARGS(start, duration, interference),
215
216	TP_STRUCT__entry(
217		__field(	u64,		start	)
218		__field(	u64,		duration)
219		__field(	u64,		interference)
220	),
221
222	TP_fast_assign(
223		__entry->start = start;
224		__entry->duration = duration;
225		__entry->interference = interference;
226	),
227
228	TP_printk("start %llu.%09u duration %llu ns interference %llu",
229		__print_ns_to_secs(__entry->start),
230		__print_ns_without_secs(__entry->start),
231		__entry->duration,
232		__entry->interference)
233);
234
235#endif /* _TRACE_OSNOISE_H */
236
237/* This part must be outside protection */
238#include <trace/define_trace.h>
~/ Read-only file preview.