Lines Matching full:that

9 that make use of RCU.  Violating any of the rules listed below will
10 result in the same sorts of problems that leaving out a locking primitive
17 performance measurements show that RCU is nonetheless the right
35 approach provides the same potential simplifications that garbage
54 information relating to itself that other tasks can read, there
55 by definition can be no bottleneck). Note that the definition
81 any locks or atomic operations. This means that readers will
88 RCU-protected data structures that have been added to
94 locks (that are acquired by both readers and writers)
95 that guard per-element state. Of course, fields that
110 d. Carefully order the updates and the reads so that
119 a separate structure, so that the change may be made
129 accesses. The rcu_dereference() primitive ensures that
131 that the pointer points to. This really is necessary
137 Please note that compilers can also reorder code, and
139 just that. The rcu_dereference() primitive therefore also
148 as the list_for_each_entry_rcu(). Note that it is
151 primitives. This is particularly useful in code that
181 e. Updates must ensure that initialization of a given
182 structure happens before pointers to that structure are
184 when publicizing a pointer to a structure that can
199 be restricted to rare configuration-change operations that would
207 Restructure your code so that it batches the updates, allowing
218 rcu_read_unlock(), (2) any pair of primitives that disables
220 rcu_read_unlock_bh(), or (3) any pair of primitives that disables
230 context switches, that is, from blocking. If the updater uses
235 must use anything that disables interrupts.
246 that this usage is safe is that readers can use anything that
260 primitive is that it automatically self-limits: if grace periods
283 the memory allocator, so that this wrapper function
297 here is that superuser already has lots of ways to crash
305 Note that although these primitives do take action to avoid memory
322 The reason that it is permissible to use RCU list-traversal
323 primitives when the update-side lock is held is that doing so
330 time that readers might be accessing that structure. In such
344 acquisition of that lock will result in deadlock as soon as
346 interrupting that acquisition's critical section.
349 the callback code simply wrappers around kfree(), so that this
350 is not an issue (or, more accurately, to the extent that it is
354 to safely access and/or modify that data structure.
356 Do not assume that RCU callbacks will be executed on the same
357 CPU that executed the corresponding call_rcu() or call_srcu().
359 callback pending, then that RCU callback will execute on some
370 Please note that if you don't need to sleep in read-side critical
378 "struct srcu_struct" that defines the scope of a given
384 calls that have been passed the same srcu_struct. This property
407 Note that rcu_assign_pointer() relates to SRCU just as it does to
415 that readers can follow that could be affected by the
420 is the caller's responsibility to guarantee that any subsequent
437 check that accesses to RCU-protected data
444 check that you don't pass the
446 grace period has elapsed since the last time that you
447 passed that same object to call_rcu() (or friends).
452 access that pointer without the services of one of the
455 These debugging aids can help you find problems that are
461 the last invocation and before unloading that module. Note that
465 Or even on the current CPU if that CPU recently went offline