• Paul E. McKenney's avatar
    [PATCH] srcu-3: RCU variant permitting read-side blocking · 621934ee
    Paul E. McKenney authored
    Updated patch adding a variant of RCU that permits sleeping in read-side
    critical sections.  SRCU is as follows:
    
    o	Each use of SRCU creates its own srcu_struct, and each
    	srcu_struct has its own set of grace periods.  This is
    	critical, as it prevents one subsystem with a blocking
    	reader from holding up SRCU grace periods for other
    	subsystems.
    
    o	The SRCU primitives (srcu_read_lock(), srcu_read_unlock(),
    	and synchronize_srcu()) all take a pointer to a srcu_struct.
    
    o	The SRCU primitives must be called from process context.
    
    o	srcu_read_lock() returns an int that must be passed to
    	the matching srcu_read_unlock().  Realtime RCU avoids the
    	need for this by storing the state in the task struct,
    	but SRCU needs to allow a given code path to pass through
    	multiple SRCU domains -- storing state in the task struct
    	would therefore require either arbitrary space in the
    	task struct or arbitrary limits on SRCU nesting.  So I
    	kicked the state-storage p...
    621934ee
Makefile 2.88 KB