linux/kernel/trace
Steven Rostedt bf41a158ca ring-buffer: make reentrant
This patch replaces the local_irq_save/restore with preempt_disable/
enable. This allows for interrupts to enter while recording.
To write to the ring buffer, you must reserve data, and then
commit it. During this time, an interrupt may call a trace function
that will also record into the buffer before the commit is made.

The interrupt will reserve its entry after the first entry, even
though the first entry did not finish yet.

The time stamp delta of the interrupt entry will be zero, since
in the view of the trace, the interrupt happened during the
first field anyway.

Locking still takes place when the tail/write moves from one page
to the next. The reader always takes the locks.

A new page pointer is added, called the commit. The write/tail will
always point to the end of all entries. The commit field will
point to the last committed entry. Only this commit entry may
update the write time stamp.

The reader can only go up to the commit. It cannot go past it.

If a lot of interrupts come in during a commit that fills up the
buffer, and it happens to make it all the way around the buffer
back to the commit, then a warning is printed and new events will
be dropped.

Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-10-14 10:39:19 +02:00
..
ftrace.c ftrace: warn on failure to disable mcount callers 2008-10-14 10:38:11 +02:00
Kconfig tracing: unified trace buffer 2008-10-14 10:38:54 +02:00
Makefile tracing: unified trace buffer 2008-10-14 10:38:54 +02:00
ring_buffer.c ring-buffer: make reentrant 2008-10-14 10:39:19 +02:00
trace_boot.c tracing/fastboot: only trace non-module initcalls 2008-10-14 10:39:17 +02:00
trace_functions.c ftrace: make work with new ring buffer 2008-10-14 10:38:57 +02:00
trace_irqsoff.c ftrace: move pc counter in irqtrace 2008-10-14 10:39:16 +02:00
trace_mmiotrace.c ftrace: preempt disable over interrupt disable 2008-10-14 10:39:09 +02:00
trace_nop.c ftrace: make work with new ring buffer 2008-10-14 10:38:57 +02:00
trace_sched_switch.c ftrace: preempt disable over interrupt disable 2008-10-14 10:39:09 +02:00
trace_sched_wakeup.c ftrace: preempt disable over interrupt disable 2008-10-14 10:39:09 +02:00
trace_selftest_dynamic.c ftrace: fix dynamic ftrace selftest 2008-05-23 21:13:23 +02:00
trace_selftest.c ftrace: make work with new ring buffer 2008-10-14 10:38:57 +02:00
trace_stack.c ftrace: stack trace add indexes 2008-10-14 10:36:28 +02:00
trace_sysprof.c ftrace: make work with new ring buffer 2008-10-14 10:38:57 +02:00
trace.c ftrace: preempt disable over interrupt disable 2008-10-14 10:39:09 +02:00
trace.h ftrace: preempt disable over interrupt disable 2008-10-14 10:39:09 +02:00