Commit 066bb1c8 authored by Paul E. McKenney's avatar Paul E. McKenney

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: default avatarAndrea Parri <parri.andrea@gmail.com>
Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
parent 6771853b
...@@ -587,20 +587,21 @@ It is extremely simple: ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment