Przeglądaj źródła

doc: Update the comparisons rule in rcu_dereference.txt

When an RCU-protected pointer is fetched but never dereferenced
rcu_access_pointer() should be used in place of rcu_dereference().
This commit explicitly records this very fact in Documentation/
RCU/rcu_dereference.txt, in order to prevent the usage of
rcu_dereference() in comparisons.

Signed-off-by: Michalis Kokologiannakis <mixaskok@gmail.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Michalis Kokologiannakis 8 lat temu
rodzic
commit
93728af0a1
1 zmienionych plików z 9 dodań i 0 usunięć
  1. 9 0
      Documentation/RCU/rcu_dereference.txt

+ 9 - 0
Documentation/RCU/rcu_dereference.txt

@@ -138,6 +138,15 @@ o	Be very careful about comparing pointers obtained from
 		This sort of comparison occurs frequently when scanning
 		This sort of comparison occurs frequently when scanning
 		RCU-protected circular linked lists.
 		RCU-protected circular linked lists.
 
 
+		Note that if checks for being within an RCU read-side
+		critical section are not required and the pointer is never
+		dereferenced, rcu_access_pointer() should be used in place
+		of rcu_dereference(). The rcu_access_pointer() primitive
+		does not require an enclosing read-side critical section,
+		and also omits the smp_read_barrier_depends() included in
+		rcu_dereference(), which in turn should provide a small
+		performance gain in some CPUs (e.g., the DEC Alpha).
+
 	o	The comparison is against a pointer that references memory
 	o	The comparison is against a pointer that references memory
 		that was initialized "a long time ago."  The reason
 		that was initialized "a long time ago."  The reason
 		this is safe is that even if misordering occurs, the
 		this is safe is that even if misordering occurs, the