trace_osnoise.c (ca31fef11dc83e672415d5925a134749761329bd) trace_osnoise.c (d03721a6e7e8c04261873b3840daa3ce2c5b0543)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * OS Noise Tracer: computes the OS Noise suffered by a running thread.
4 * Timerlat Tracer: measures the wakeup latency of a timer triggered IRQ and thread.
5 *
6 * Based on "hwlat_detector" tracer by:
7 * Copyright (C) 2008-2009 Jon Masters, Red Hat, Inc. <jcm@redhat.com>
8 * Copyright (C) 2013-2016 Steven Rostedt, Red Hat, Inc. <srostedt@redhat.com>

--- 239 unchanged lines hidden (view full) ---

248#endif
249};
250
251/*
252 * Boolean variable used to inform that the tracer is currently sampling.
253 */
254static bool osnoise_busy;
255
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * OS Noise Tracer: computes the OS Noise suffered by a running thread.
4 * Timerlat Tracer: measures the wakeup latency of a timer triggered IRQ and thread.
5 *
6 * Based on "hwlat_detector" tracer by:
7 * Copyright (C) 2008-2009 Jon Masters, Red Hat, Inc. <jcm@redhat.com>
8 * Copyright (C) 2013-2016 Steven Rostedt, Red Hat, Inc. <srostedt@redhat.com>

--- 239 unchanged lines hidden (view full) ---

248#endif
249};
250
251/*
252 * Boolean variable used to inform that the tracer is currently sampling.
253 */
254static bool osnoise_busy;
255
256#ifdef CONFIG_PREEMPT_RT
256/*
257 * Print the osnoise header info.
258 */
259static void print_osnoise_headers(struct seq_file *s)
260{
261 if (osnoise_data.tainted)
262 seq_puts(s, "# osnoise is tainted!\n");
263
257/*
258 * Print the osnoise header info.
259 */
260static void print_osnoise_headers(struct seq_file *s)
261{
262 if (osnoise_data.tainted)
263 seq_puts(s, "# osnoise is tainted!\n");
264
265 seq_puts(s, "# _-------=> irqs-off\n");
266 seq_puts(s, "# / _------=> need-resched\n");
267 seq_puts(s, "# | / _-----=> need-resched-lazy\n");
268 seq_puts(s, "# || / _----=> hardirq/softirq\n");
269 seq_puts(s, "# ||| / _---=> preempt-depth\n");
270 seq_puts(s, "# |||| / _--=> preempt-lazy-depth\n");
271 seq_puts(s, "# ||||| / _-=> migrate-disable\n");
272
273 seq_puts(s, "# |||||| / ");
274 seq_puts(s, " MAX\n");
275
276 seq_puts(s, "# ||||| / ");
277 seq_puts(s, " SINGLE Interference counters:\n");
278
279 seq_puts(s, "# ||||||| RUNTIME ");
280 seq_puts(s, " NOISE %% OF CPU NOISE +-----------------------------+\n");
281
282 seq_puts(s, "# TASK-PID CPU# ||||||| TIMESTAMP IN US ");
283 seq_puts(s, " IN US AVAILABLE IN US HW NMI IRQ SIRQ THREAD\n");
284
285 seq_puts(s, "# | | | ||||||| | | ");
286 seq_puts(s, " | | | | | | | |\n");
287}
288#else /* CONFIG_PREEMPT_RT */
289static void print_osnoise_headers(struct seq_file *s)
290{
291 if (osnoise_data.tainted)
292 seq_puts(s, "# osnoise is tainted!\n");
293
264 seq_puts(s, "# _-----=> irqs-off\n");
265 seq_puts(s, "# / _----=> need-resched\n");
266 seq_puts(s, "# | / _---=> hardirq/softirq\n");
267 seq_puts(s, "# || / _--=> preempt-depth ");
268 seq_puts(s, " MAX\n");
269
270 seq_puts(s, "# || / ");
271 seq_puts(s, " SINGLE Interference counters:\n");
272
273 seq_puts(s, "# |||| RUNTIME ");
274 seq_puts(s, " NOISE %% OF CPU NOISE +-----------------------------+\n");
275
276 seq_puts(s, "# TASK-PID CPU# |||| TIMESTAMP IN US ");
277 seq_puts(s, " IN US AVAILABLE IN US HW NMI IRQ SIRQ THREAD\n");
278
279 seq_puts(s, "# | | | |||| | | ");
280 seq_puts(s, " | | | | | | | |\n");
281}
294 seq_puts(s, "# _-----=> irqs-off\n");
295 seq_puts(s, "# / _----=> need-resched\n");
296 seq_puts(s, "# | / _---=> hardirq/softirq\n");
297 seq_puts(s, "# || / _--=> preempt-depth ");
298 seq_puts(s, " MAX\n");
299
300 seq_puts(s, "# || / ");
301 seq_puts(s, " SINGLE Interference counters:\n");
302
303 seq_puts(s, "# |||| RUNTIME ");
304 seq_puts(s, " NOISE %% OF CPU NOISE +-----------------------------+\n");
305
306 seq_puts(s, "# TASK-PID CPU# |||| TIMESTAMP IN US ");
307 seq_puts(s, " IN US AVAILABLE IN US HW NMI IRQ SIRQ THREAD\n");
308
309 seq_puts(s, "# | | | |||| | | ");
310 seq_puts(s, " | | | | | | | |\n");
311}
312#endif /* CONFIG_PREEMPT_RT */
282
283/*
284 * osnoise_taint - report an osnoise error.
285 */
286#define osnoise_taint(msg) ({ \
287 struct trace_array *tr = osnoise_trace; \
288 \
289 trace_array_printk_buf(tr->array_buffer.buffer, _THIS_IP_, msg); \

--- 1770 unchanged lines hidden ---
313
314/*
315 * osnoise_taint - report an osnoise error.
316 */
317#define osnoise_taint(msg) ({ \
318 struct trace_array *tr = osnoise_trace; \
319 \
320 trace_array_printk_buf(tr->array_buffer.buffer, _THIS_IP_, msg); \

--- 1770 unchanged lines hidden ---