Preempt-RCU: implementation
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Fri, 25 Jan 2008 20:08:24 +0000 (21:08 +0100)
committerIngo Molnar <mingo@elte.hu>
Fri, 25 Jan 2008 20:08:24 +0000 (21:08 +0100)
commite260be673a15b6125068270e0216a3bfbfc12f87
treef50760606d395bf6faa9e865f814761a3c88d32c
parente0ecfa7917cafe72f4a75f87e8bb5d8d51dc534f
Preempt-RCU: implementation

This patch implements a new version of RCU which allows its read-side
critical sections to be preempted. It uses a set of counter pairs
to keep track of the read-side critical sections and flips them
when all tasks exit read-side critical section. The details
of this implementation can be found in this paper -

http://www.rdrop.com/users/paulmck/RCU/OLSrtRCU.2006.08.11a.pdf

and the article-

http://lwn.net/Articles/253651/

This patch was developed as a part of the -rt kernel development and
meant to provide better latencies when read-side critical sections of
RCU don't disable preemption.  As a consequence of keeping track of RCU
readers, the readers have a slight overhead (optimizations in the paper).
This implementation co-exists with the "classic" RCU implementations
and can be switched to at compiler.

Also includes RCU tracing summarized in debugfs.

[ akpm@linux-foundation.org: build fixes on non-preempt architectures ]

Signed-off-by: Gautham R Shenoy <ego@in.ibm.com>
Signed-off-by: Dipankar Sarma <dipankar@in.ibm.com>
Signed-off-by: Paul E. McKenney <paulmck@us.ibm.com>
Reviewed-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
13 files changed:
fs/Kconfig
include/linux/rcuclassic.h
include/linux/rcupdate.h
include/linux/rcupreempt.h [new file with mode: 0644]
include/linux/rcupreempt_trace.h [new file with mode: 0644]
include/linux/sched.h
init/Kconfig
kernel/Kconfig.preempt
kernel/Makefile
kernel/fork.c
kernel/rcuclassic.c
kernel/rcupreempt.c [new file with mode: 0644]
kernel/rcupreempt_trace.c [new file with mode: 0644]