mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 11:19:37 +00:00
![Steven Rostedt](/assets/img/avatar_default.png)
When debugging tight race conditions, it can be helpful to have a synchronized tracing method. Although in most cases the global clock provides this functionality, if timings is not the issue, it is more comforting to know that the order of events really happened in a precise order. Instead of using a clock, add a "counter" that is simply an incrementing atomic 64bit counter that orders the events as they are perceived to happen. The trace_clock_counter() is added from the attempt by Peter Zijlstra trying to convert the trace_clock_global() to it. I took Peter's counter code and made trace_clock_counter() instead, and added it to the choice of clocks. Just echo counter > /debug/tracing/trace_clock to activate it. Requested-by: Thomas Gleixner <tglx@linutronix.de> Requested-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Reviewed-By: Valdis Kletnieks <valdis.kletnieks@vt.edu> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
20 lines
552 B
C
20 lines
552 B
C
#ifndef _LINUX_TRACE_CLOCK_H
|
|
#define _LINUX_TRACE_CLOCK_H
|
|
|
|
/*
|
|
* 3 trace clock variants, with differing scalability/precision
|
|
* tradeoffs:
|
|
*
|
|
* - local: CPU-local trace clock
|
|
* - medium: scalable global clock with some jitter
|
|
* - global: globally monotonic, serialized clock
|
|
*/
|
|
#include <linux/compiler.h>
|
|
#include <linux/types.h>
|
|
|
|
extern u64 notrace trace_clock_local(void);
|
|
extern u64 notrace trace_clock(void);
|
|
extern u64 notrace trace_clock_global(void);
|
|
extern u64 notrace trace_clock_counter(void);
|
|
|
|
#endif /* _LINUX_TRACE_CLOCK_H */
|