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:
parent
6771853bce
commit
066bb1c84a
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user