doc: Update rcu_assign_pointer() definition in whatisRCU.txt

The rcu_assign_pointer() macro has changed over time, and the version
in Documentation/RCU/whatisRCU.txt has not kept up.  This commit brings
it into 2017, albeit in a simplified fashion.

Reported-by: Andrea Parri <parri.andrea@gmail.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
This commit is contained in:
Paul E. McKenney 2017-03-07 07:30:58 -08:00
parent 6771853bce
commit 066bb1c84a

View File

@ -587,20 +587,21 @@ It is extremely simple:
write_unlock(&rcu_gp_mutex); write_unlock(&rcu_gp_mutex);
} }
[You can ignore rcu_assign_pointer() and rcu_dereference() without [You can ignore rcu_assign_pointer() and rcu_dereference() without missing
missing much. But here they are anyway. And whatever you do, don't much. But here are simplified versions anyway. And whatever you do,
forget about them when submitting patches making use of RCU!] don't forget about them when submitting patches making use of RCU!]
#define rcu_assign_pointer(p, v) ({ \ #define rcu_assign_pointer(p, v) \
smp_wmb(); \ ({ \
(p) = (v); \ smp_store_release(&(p), (v)); \
}) })
#define rcu_dereference(p) ({ \ #define rcu_dereference(p) \
typeof(p) _________p1 = p; \ ({ \
smp_read_barrier_depends(); \ typeof(p) _________p1 = p; \
(_________p1); \ smp_read_barrier_depends(); \
}) (_________p1); \
})
The rcu_read_lock() and rcu_read_unlock() primitive read-acquire The rcu_read_lock() and rcu_read_unlock() primitive read-acquire