tracing: Use irq_work for wake ups and remove *_nowake_*() functions
authorSteven Rostedt <srostedt@redhat.com>
Fri, 2 Nov 2012 00:54:21 +0000 (20:54 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Fri, 2 Nov 2012 14:21:52 +0000 (10:21 -0400)
commit0d5c6e1c19bab82fad4837108c2902f557d62a04
treeed075db499735ea4d72b9d9d7f992fe7d9a1a328
parent02404baf1b47123f1c88c9f9f1f3b00e1e2b10db
tracing: Use irq_work for wake ups and remove *_nowake_*() functions

Have the ring buffer commit function use the irq_work infrastructure to
wake up any waiters waiting on the ring buffer for new data. The irq_work
was created for such a purpose, where doing the actual wake up at the
time of adding data is too dangerous, as an event or function trace may
be in the midst of the work queue locks and cause deadlocks. The irq_work
will either delay the action to the next timer interrupt, or trigger an IPI
to itself forcing an interrupt to do the work (in a safe location).

With irq_work, all ring buffer commits can safely do wakeups, removing
the need for the ring buffer commit "nowake" variants, which were used
by events and function tracing. All commits can now safely use the
normal commit, and the "nowake" variants can be removed.

Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
include/linux/ftrace_event.h
include/trace/ftrace.h
kernel/trace/Kconfig
kernel/trace/trace.c
kernel/trace/trace.h
kernel/trace/trace_events.c
kernel/trace/trace_kprobe.c
kernel/trace/trace_sched_switch.c
kernel/trace/trace_selftest.c