aboutsummaryrefslogtreecommitdiff
path: root/include/linux/rcupreempt.h
AgeCommit message (Collapse)AuthorFilesLines
2008-04-30Remove "#ifdef __KERNEL__" checks from unexported headersRobert P. J. Day1-3/+0
Remove the "#ifdef __KERNEL__" tests from unexported header files in linux/include whose entire contents are wrapped in that preprocessor test. Signed-off-by: Robert P. J. Day <[email protected]> Cc: David Woodhouse <[email protected]> Cc: Sam Ravnborg <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2008-03-19rcu: fix misplaced mb() in rcu_enter/exit_nohz()Paul E. McKenney1-2/+2
In the process of writing up the mechanical proof of correctness for the dynticks/preemptable-RCU interface, I noticed misplaced memory barriers in rcu_enter_nohz() and rcu_exit_nohz(). This patch puts them in the right place and adds a comment. The key thing to keep in mind is that rcu_enter_nohz() is -exiting- the mode that can legally execute RCU read-side critical sections. The memory barrier must be between any potential RCU read-side critical sections and the increment of the per-CPU dynticks_progress_counter, and thus must come -before- this increment. And vice versa for rcu_exit_nohz(). The locking in the scheduler is probably saving us for the moment. Also, switch to smp_mb() - we don't need a barrier for uniprocessor kernels. Signed-off-by: Paul E. McKenney <[email protected]> Acked-by: Steven Rostedt <[email protected]> Cc: Nick Piggin <[email protected]> Cc: Oleg Nesterov <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2008-02-29rcu: add support for dynamic ticks and preempt rcuSteven Rostedt1-0/+22
The PREEMPT-RCU can get stuck if a CPU goes idle and NO_HZ is set. The idle CPU will not progress the RCU through its grace period and a synchronize_rcu my get stuck. Without this patch I have a box that will not boot when PREEMPT_RCU and NO_HZ are set. That same box boots fine with this patch. This patch comes from the -rt kernel where it has been tested for several months. Signed-off-by: Steven Rostedt <[email protected]> Signed-off-by: Paul E. McKenney <[email protected]> Signed-off-by: Ingo Molnar <[email protected]>
2008-02-08preemptible RCU: sparse annotationsPatrick McHardy1-2/+2
Signed-off-by: Patrick McHardy <[email protected]> Acked-by: Paul E. McKenney <[email protected]> Cc: Dipankar Sarma <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2008-01-25Preempt-RCU: implementationPaul E. McKenney1-0/+86
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. [ [email protected]: build fixes on non-preempt architectures ] Signed-off-by: Gautham R Shenoy <[email protected]> Signed-off-by: Dipankar Sarma <[email protected]> Signed-off-by: Paul E. McKenney <[email protected]> Reviewed-by: Steven Rostedt <[email protected]> Signed-off-by: Ingo Molnar <[email protected]>