aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/RCU/checklist.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/RCU/checklist.txt')
-rw-r--r--Documentation/RCU/checklist.txt26
1 files changed, 16 insertions, 10 deletions
diff --git a/Documentation/RCU/checklist.txt b/Documentation/RCU/checklist.txt
index 31ef8fe07f82..79e789b8b8ea 100644
--- a/Documentation/RCU/checklist.txt
+++ b/Documentation/RCU/checklist.txt
@@ -217,9 +217,14 @@ over a rather long period of time, but improvements are always welcome!
217 whether the increased speed is worth it. 217 whether the increased speed is worth it.
218 218
2198. Although synchronize_rcu() is slower than is call_rcu(), it 2198. Although synchronize_rcu() is slower than is call_rcu(), it
220 usually results in simpler code. So, unless update performance 220 usually results in simpler code. So, unless update performance is
221 is critically important or the updaters cannot block, 221 critically important, the updaters cannot block, or the latency of
222 synchronize_rcu() should be used in preference to call_rcu(). 222 synchronize_rcu() is visible from userspace, synchronize_rcu()
223 should be used in preference to call_rcu(). Furthermore,
224 kfree_rcu() usually results in even simpler code than does
225 synchronize_rcu() without synchronize_rcu()'s multi-millisecond
226 latency. So please take advantage of kfree_rcu()'s "fire and
227 forget" memory-freeing capabilities where it applies.
223 228
224 An especially important property of the synchronize_rcu() 229 An especially important property of the synchronize_rcu()
225 primitive is that it automatically self-limits: if grace periods 230 primitive is that it automatically self-limits: if grace periods
@@ -268,7 +273,8 @@ over a rather long period of time, but improvements are always welcome!
268 e. Periodically invoke synchronize_rcu(), permitting a limited 273 e. Periodically invoke synchronize_rcu(), permitting a limited
269 number of updates per grace period. 274 number of updates per grace period.
270 275
271 The same cautions apply to call_rcu_bh() and call_rcu_sched(). 276 The same cautions apply to call_rcu_bh(), call_rcu_sched(),
277 call_srcu(), and kfree_rcu().
272 278
2739. All RCU list-traversal primitives, which include 2799. All RCU list-traversal primitives, which include
274 rcu_dereference(), list_for_each_entry_rcu(), and 280 rcu_dereference(), list_for_each_entry_rcu(), and
@@ -296,9 +302,9 @@ over a rather long period of time, but improvements are always welcome!
296 all currently executing rcu_read_lock()-protected RCU read-side 302 all currently executing rcu_read_lock()-protected RCU read-side
297 critical sections complete. It does -not- necessarily guarantee 303 critical sections complete. It does -not- necessarily guarantee
298 that all currently running interrupts, NMIs, preempt_disable() 304 that all currently running interrupts, NMIs, preempt_disable()
299 code, or idle loops will complete. Therefore, if you do not have 305 code, or idle loops will complete. Therefore, if your
300 rcu_read_lock()-protected read-side critical sections, do -not- 306 read-side critical sections are protected by something other
301 use synchronize_rcu(). 307 than rcu_read_lock(), do -not- use synchronize_rcu().
302 308
303 Similarly, disabling preemption is not an acceptable substitute 309 Similarly, disabling preemption is not an acceptable substitute
304 for rcu_read_lock(). Code that attempts to use preemption 310 for rcu_read_lock(). Code that attempts to use preemption
@@ -401,9 +407,9 @@ over a rather long period of time, but improvements are always welcome!
401 read-side critical sections. It is the responsibility of the 407 read-side critical sections. It is the responsibility of the
402 RCU update-side primitives to deal with this. 408 RCU update-side primitives to deal with this.
403 409
40417. Use CONFIG_PROVE_RCU, CONFIG_DEBUG_OBJECTS_RCU_HEAD, and 41017. Use CONFIG_PROVE_RCU, CONFIG_DEBUG_OBJECTS_RCU_HEAD, and the
405 the __rcu sparse checks to validate your RCU code. These 411 __rcu sparse checks (enabled by CONFIG_SPARSE_RCU_POINTER) to
406 can help find problems as follows: 412 validate your RCU code. These can help find problems as follows:
407 413
408 CONFIG_PROVE_RCU: check that accesses to RCU-protected data 414 CONFIG_PROVE_RCU: check that accesses to RCU-protected data
409 structures are carried out under the proper RCU 415 structures are carried out under the proper RCU