Documentation/RCU: Fix emphasis markers

"-foo-" does not work as emphasis in ReST markdown.
Use "*foo*" instead.

Signed-off-by: Akira Yokosawa <akiyks@gmail.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
This commit is contained in:
Akira Yokosawa 2021-05-20 13:32:36 +09:00 коммит произвёл Paul E. McKenney
Родитель 2734d6c1b1
Коммит e3879ecd36
3 изменённых файлов: 19 добавлений и 19 удалений

Просмотреть файл

@ -37,7 +37,7 @@ over a rather long period of time, but improvements are always welcome!
1. Does the update code have proper mutual exclusion? 1. Does the update code have proper mutual exclusion?
RCU does allow -readers- to run (almost) naked, but -writers- must RCU does allow *readers* to run (almost) naked, but *writers* must
still use some sort of mutual exclusion, such as: still use some sort of mutual exclusion, such as:
a. locking, a. locking,
@ -73,7 +73,7 @@ over a rather long period of time, but improvements are always welcome!
critical section is every bit as bad as letting them leak out critical section is every bit as bad as letting them leak out
from under a lock. Unless, of course, you have arranged some from under a lock. Unless, of course, you have arranged some
other means of protection, such as a lock or a reference count other means of protection, such as a lock or a reference count
-before- letting them out of the RCU read-side critical section. *before* letting them out of the RCU read-side critical section.
3. Does the update code tolerate concurrent accesses? 3. Does the update code tolerate concurrent accesses?
@ -101,7 +101,7 @@ over a rather long period of time, but improvements are always welcome!
c. Make updates appear atomic to readers. For example, c. Make updates appear atomic to readers. For example,
pointer updates to properly aligned fields will pointer updates to properly aligned fields will
appear atomic, as will individual atomic primitives. appear atomic, as will individual atomic primitives.
Sequences of operations performed under a lock will -not- Sequences of operations performed under a lock will *not*
appear to be atomic to RCU readers, nor will sequences appear to be atomic to RCU readers, nor will sequences
of multiple atomic primitives. of multiple atomic primitives.
@ -333,7 +333,7 @@ over a rather long period of time, but improvements are always welcome!
for example) may be omitted. for example) may be omitted.
10. Conversely, if you are in an RCU read-side critical section, 10. Conversely, if you are in an RCU read-side critical section,
and you don't hold the appropriate update-side lock, you -must- and you don't hold the appropriate update-side lock, you *must*
use the "_rcu()" variants of the list macros. Failing to do so use the "_rcu()" variants of the list macros. Failing to do so
will break Alpha, cause aggressive compilers to generate bad code, will break Alpha, cause aggressive compilers to generate bad code,
and confuse people trying to read your code. and confuse people trying to read your code.
@ -359,12 +359,12 @@ over a rather long period of time, but improvements are always welcome!
callback pending, then that RCU callback will execute on some callback pending, then that RCU callback will execute on some
surviving CPU. (If this was not the case, a self-spawning RCU surviving CPU. (If this was not the case, a self-spawning RCU
callback would prevent the victim CPU from ever going offline.) callback would prevent the victim CPU from ever going offline.)
Furthermore, CPUs designated by rcu_nocbs= might well -always- Furthermore, CPUs designated by rcu_nocbs= might well *always*
have their RCU callbacks executed on some other CPUs, in fact, have their RCU callbacks executed on some other CPUs, in fact,
for some real-time workloads, this is the whole point of using for some real-time workloads, this is the whole point of using
the rcu_nocbs= kernel boot parameter. the rcu_nocbs= kernel boot parameter.
13. Unlike other forms of RCU, it -is- permissible to block in an 13. Unlike other forms of RCU, it *is* permissible to block in an
SRCU read-side critical section (demarked by srcu_read_lock() SRCU read-side critical section (demarked by srcu_read_lock()
and srcu_read_unlock()), hence the "SRCU": "sleepable RCU". and srcu_read_unlock()), hence the "SRCU": "sleepable RCU".
Please note that if you don't need to sleep in read-side critical Please note that if you don't need to sleep in read-side critical
@ -411,16 +411,16 @@ over a rather long period of time, but improvements are always welcome!
14. The whole point of call_rcu(), synchronize_rcu(), and friends 14. The whole point of call_rcu(), synchronize_rcu(), and friends
is to wait until all pre-existing readers have finished before is to wait until all pre-existing readers have finished before
carrying out some otherwise-destructive operation. It is carrying out some otherwise-destructive operation. It is
therefore critically important to -first- remove any path therefore critically important to *first* remove any path
that readers can follow that could be affected by the that readers can follow that could be affected by the
destructive operation, and -only- -then- invoke call_rcu(), destructive operation, and *only then* invoke call_rcu(),
synchronize_rcu(), or friends. synchronize_rcu(), or friends.
Because these primitives only wait for pre-existing readers, it Because these primitives only wait for pre-existing readers, it
is the caller's responsibility to guarantee that any subsequent is the caller's responsibility to guarantee that any subsequent
readers will execute safely. readers will execute safely.
15. The various RCU read-side primitives do -not- necessarily contain 15. The various RCU read-side primitives do *not* necessarily contain
memory barriers. You should therefore plan for the CPU memory barriers. You should therefore plan for the CPU
and the compiler to freely reorder code into and out of RCU and the compiler to freely reorder code into and out of RCU
read-side critical sections. It is the responsibility of the read-side critical sections. It is the responsibility of the
@ -459,8 +459,8 @@ over a rather long period of time, but improvements are always welcome!
pass in a function defined within a loadable module, then it in pass in a function defined within a loadable module, then it in
necessary to wait for all pending callbacks to be invoked after necessary to wait for all pending callbacks to be invoked after
the last invocation and before unloading that module. Note that the last invocation and before unloading that module. Note that
it is absolutely -not- sufficient to wait for a grace period! it is absolutely *not* sufficient to wait for a grace period!
The current (say) synchronize_rcu() implementation is -not- The current (say) synchronize_rcu() implementation is *not*
guaranteed to wait for callbacks registered on other CPUs. guaranteed to wait for callbacks registered on other CPUs.
Or even on the current CPU if that CPU recently went offline Or even on the current CPU if that CPU recently went offline
and came back online. and came back online.
@ -470,7 +470,7 @@ over a rather long period of time, but improvements are always welcome!
- call_rcu() -> rcu_barrier() - call_rcu() -> rcu_barrier()
- call_srcu() -> srcu_barrier() - call_srcu() -> srcu_barrier()
However, these barrier functions are absolutely -not- guaranteed However, these barrier functions are absolutely *not* guaranteed
to wait for a grace period. In fact, if there are no call_rcu() to wait for a grace period. In fact, if there are no call_rcu()
callbacks waiting anywhere in the system, rcu_barrier() is within callbacks waiting anywhere in the system, rcu_barrier() is within
its rights to return immediately. its rights to return immediately.

Просмотреть файл

@ -43,7 +43,7 @@ Follow these rules to keep your RCU code working properly:
- Set bits and clear bits down in the must-be-zero low-order - Set bits and clear bits down in the must-be-zero low-order
bits of that pointer. This clearly means that the pointer bits of that pointer. This clearly means that the pointer
must have alignment constraints, for example, this does must have alignment constraints, for example, this does
-not- work in general for char* pointers. *not* work in general for char* pointers.
- XOR bits to translate pointers, as is done in some - XOR bits to translate pointers, as is done in some
classic buddy-allocator algorithms. classic buddy-allocator algorithms.
@ -174,7 +174,7 @@ Follow these rules to keep your RCU code working properly:
Please see the "CONTROL DEPENDENCIES" section of Please see the "CONTROL DEPENDENCIES" section of
Documentation/memory-barriers.txt for more details. Documentation/memory-barriers.txt for more details.
- The pointers are not equal -and- the compiler does - The pointers are not equal *and* the compiler does
not have enough information to deduce the value of the not have enough information to deduce the value of the
pointer. Note that the volatile cast in rcu_dereference() pointer. Note that the volatile cast in rcu_dereference()
will normally prevent the compiler from knowing too much. will normally prevent the compiler from knowing too much.
@ -360,7 +360,7 @@ in turn destroying the ordering between this load and the loads of the
return values. This can result in "p->b" returning pre-initialization return values. This can result in "p->b" returning pre-initialization
garbage values. garbage values.
In short, rcu_dereference() is -not- optional when you are going to In short, rcu_dereference() is *not* optional when you are going to
dereference the resulting pointer. dereference the resulting pointer.

Просмотреть файл

@ -32,7 +32,7 @@ warnings:
- Booting Linux using a console connection that is too slow to - Booting Linux using a console connection that is too slow to
keep up with the boot-time console-message rate. For example, keep up with the boot-time console-message rate. For example,
a 115Kbaud serial console can be -way- too slow to keep up a 115Kbaud serial console can be *way* too slow to keep up
with boot-time message rates, and will frequently result in with boot-time message rates, and will frequently result in
RCU CPU stall warning messages. Especially if you have added RCU CPU stall warning messages. Especially if you have added
debug printk()s. debug printk()s.
@ -105,7 +105,7 @@ warnings:
leading the realization that the CPU had failed. leading the realization that the CPU had failed.
The RCU, RCU-sched, and RCU-tasks implementations have CPU stall warning. The RCU, RCU-sched, and RCU-tasks implementations have CPU stall warning.
Note that SRCU does -not- have CPU stall warnings. Please note that Note that SRCU does *not* have CPU stall warnings. Please note that
RCU only detects CPU stalls when there is a grace period in progress. RCU only detects CPU stalls when there is a grace period in progress.
No grace period, no CPU stall warnings. No grace period, no CPU stall warnings.
@ -145,7 +145,7 @@ CONFIG_RCU_CPU_STALL_TIMEOUT
this parameter is checked only at the beginning of a cycle. this parameter is checked only at the beginning of a cycle.
So if you are 10 seconds into a 40-second stall, setting this So if you are 10 seconds into a 40-second stall, setting this
sysfs parameter to (say) five will shorten the timeout for the sysfs parameter to (say) five will shorten the timeout for the
-next- stall, or the following warning for the current stall *next* stall, or the following warning for the current stall
(assuming the stall lasts long enough). It will not affect the (assuming the stall lasts long enough). It will not affect the
timing of the next warning for the current stall. timing of the next warning for the current stall.
@ -202,7 +202,7 @@ causing stalls, and that the stall was affecting RCU-sched. This message
will normally be followed by stack dumps for each CPU. Please note that will normally be followed by stack dumps for each CPU. Please note that
PREEMPT_RCU builds can be stalled by tasks as well as by CPUs, and that PREEMPT_RCU builds can be stalled by tasks as well as by CPUs, and that
the tasks will be indicated by PID, for example, "P3421". It is even the tasks will be indicated by PID, for example, "P3421". It is even
possible for an rcu_state stall to be caused by both CPUs -and- tasks, possible for an rcu_state stall to be caused by both CPUs *and* tasks,
in which case the offending CPUs and tasks will all be called out in the list. in which case the offending CPUs and tasks will all be called out in the list.
CPU 2's "(3 GPs behind)" indicates that this CPU has not interacted with CPU 2's "(3 GPs behind)" indicates that this CPU has not interacted with