1 Userspace RCU Implementatation
2 by Mathieu Desnoyers and Paul E. McKenney
16 Each thread that has reader critical sections (that uses
17 rcu_read_lock()/rcu_read_unlock() must first register to the URCU
18 library. This is done by calling rcu_register_thread().
22 Reader critical sections must be protected by locating them between
23 calls to rcu_read_lock() and rcu_read_unlock(). Inside that lock,
24 rcu_dereference() may be called to read an RCU protected pointer.
28 rcu_assign_pointer() and rcu_xchg_pointer() may be called anywhere.
29 After, synchronize_rcu() must be called. When it returns, the old
30 values are not in usage anymore.
33 Usage of DEBUG_FULL_MB
35 DEBUG_FULL_MB uses full SMP barriers for readers. This eliminates the
36 need for signals but results in slower reads.
41 DEBUG_YIELD is used to add random delays in the code for testing