docs: Update RCU cross-references as suggested in doc-guide

The RCU documentation contains old-style cross references which
do not follow the best practices outlined in doc-guide/sphinx.rst.
In addition, some of the cross references use URLs that should be replaced
by pathnames.

Update all of these cross references and adjust the surrounding words.

Summary of changes:

  - out-of-date plaintext file names (*.txt) -> *.rst
  - references by :ref: tags -> path names of *.rst
    * use relative paths to .rst files under the RCU/ subdirectory
    * use abs paths of Documentation/xxx for other .rst files
  - references by URL under https://www.kernel.org/ -> paths of *.rst
  - adjust surrounding words of some of updated references.

Note:
  The automarkup.py script interprets references via "*.txt" as if they
were via "*.rst", so the *.txt -> *.rst changes should be regarded as
cleanups rather than bug fixes.

Cc: rcu@vger.kernel.org
Cc: linux-doc@vger.kernel.org
Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>
Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Akira Yokosawa <akiyks@gmail.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
This commit is contained in:
Akira Yokosawa 2022-03-30 23:41:00 +09:00 committed by Paul E. McKenney
parent 6172de3c7f
commit 404147faaa
8 changed files with 25 additions and 29 deletions

View File

@ -973,7 +973,7 @@ The ``->dynticks`` field counts the corresponding CPU's transitions to
and from either dyntick-idle or user mode, so that this counter has an and from either dyntick-idle or user mode, so that this counter has an
even value when the CPU is in dyntick-idle mode or user mode and an odd even value when the CPU is in dyntick-idle mode or user mode and an odd
value otherwise. The transitions to/from user mode need to be counted value otherwise. The transitions to/from user mode need to be counted
for user mode adaptive-ticks support (see timers/NO_HZ.txt). for user mode adaptive-ticks support (see Documentation/timers/no_hz.rst).
The ``->rcu_need_heavy_qs`` field is used to record the fact that the The ``->rcu_need_heavy_qs`` field is used to record the fact that the
RCU core code would really like to see a quiescent state from the RCU core code would really like to see a quiescent state from the

View File

@ -406,7 +406,7 @@ In earlier implementations, the task requesting the expedited grace
period also drove it to completion. This straightforward approach had period also drove it to completion. This straightforward approach had
the disadvantage of needing to account for POSIX signals sent to user the disadvantage of needing to account for POSIX signals sent to user
tasks, so more recent implemementations use the Linux kernel's tasks, so more recent implemementations use the Linux kernel's
`workqueues <https://www.kernel.org/doc/Documentation/core-api/workqueue.rst>`__. workqueues (see Documentation/core-api/workqueue.rst).
The requesting task still does counter snapshotting and funnel-lock The requesting task still does counter snapshotting and funnel-lock
processing, but the task reaching the top of the funnel lock does a processing, but the task reaching the top of the funnel lock does a

View File

@ -370,8 +370,8 @@ pointer fetched by rcu_dereference() may not be used outside of the
outermost RCU read-side critical section containing that outermost RCU read-side critical section containing that
rcu_dereference(), unless protection of the corresponding data rcu_dereference(), unless protection of the corresponding data
element has been passed from RCU to some other synchronization element has been passed from RCU to some other synchronization
mechanism, most commonly locking or `reference mechanism, most commonly locking or reference counting
counting <https://www.kernel.org/doc/Documentation/RCU/rcuref.txt>`__. (see ../../rcuref.rst).
.. |high-quality implementation of C11 memory_order_consume [PDF]| replace:: high-quality implementation of C11 ``memory_order_consume`` [PDF] .. |high-quality implementation of C11 memory_order_consume [PDF]| replace:: high-quality implementation of C11 ``memory_order_consume`` [PDF]
.. _high-quality implementation of C11 memory_order_consume [PDF]: http://www.rdrop.com/users/paulmck/RCU/consume.2015.07.13a.pdf .. _high-quality implementation of C11 memory_order_consume [PDF]: http://www.rdrop.com/users/paulmck/RCU/consume.2015.07.13a.pdf

View File

@ -33,8 +33,8 @@ Situation 1: Hash Tables
Hash tables are often implemented as an array, where each array entry Hash tables are often implemented as an array, where each array entry
has a linked-list hash chain. Each hash chain can be protected by RCU has a linked-list hash chain. Each hash chain can be protected by RCU
as described in the listRCU.txt document. This approach also applies as described in listRCU.rst. This approach also applies to other
to other array-of-list situations, such as radix trees. array-of-list situations, such as radix trees.
.. _static_arrays: .. _static_arrays:

View File

@ -140,8 +140,7 @@ over a rather long period of time, but improvements are always welcome!
prevents destructive compiler optimizations. However, prevents destructive compiler optimizations. However,
with a bit of devious creativity, it is possible to with a bit of devious creativity, it is possible to
mishandle the return value from rcu_dereference(). mishandle the return value from rcu_dereference().
Please see rcu_dereference.txt in this directory for Please see rcu_dereference.rst for more information.
more information.
The rcu_dereference() primitive is used by the The rcu_dereference() primitive is used by the
various "_rcu()" list-traversal primitives, such various "_rcu()" list-traversal primitives, such
@ -151,7 +150,7 @@ over a rather long period of time, but improvements are always welcome!
primitives. This is particularly useful in code that primitives. This is particularly useful in code that
is common to readers and updaters. However, lockdep is common to readers and updaters. However, lockdep
will complain if you access rcu_dereference() outside will complain if you access rcu_dereference() outside
of an RCU read-side critical section. See lockdep.txt of an RCU read-side critical section. See lockdep.rst
to learn what to do about this. to learn what to do about this.
Of course, neither rcu_dereference() nor the "_rcu()" Of course, neither rcu_dereference() nor the "_rcu()"
@ -323,7 +322,7 @@ over a rather long period of time, but improvements are always welcome!
primitives when the update-side lock is held is that doing so primitives when the update-side lock is held is that doing so
can be quite helpful in reducing code bloat when common code is can be quite helpful in reducing code bloat when common code is
shared between readers and updaters. Additional primitives shared between readers and updaters. Additional primitives
are provided for this case, as discussed in lockdep.txt. are provided for this case, as discussed in lockdep.rst.
One exception to this rule is when data is only ever added to One exception to this rule is when data is only ever added to
the linked data structure, and is never removed during any the linked data structure, and is never removed during any
@ -480,4 +479,4 @@ over a rather long period of time, but improvements are always welcome!
both rcu_barrier() and synchronize_rcu(), if necessary, using both rcu_barrier() and synchronize_rcu(), if necessary, using
something like workqueues to to execute them concurrently. something like workqueues to to execute them concurrently.
See rcubarrier.txt for more information. See rcubarrier.rst for more information.

View File

@ -10,9 +10,8 @@ A "grace period" must elapse between the two parts, and this grace period
must be long enough that any readers accessing the item being deleted have must be long enough that any readers accessing the item being deleted have
since dropped their references. For example, an RCU-protected deletion since dropped their references. For example, an RCU-protected deletion
from a linked list would first remove the item from the list, wait for from a linked list would first remove the item from the list, wait for
a grace period to elapse, then free the element. See the a grace period to elapse, then free the element. See listRCU.rst for more
:ref:`Documentation/RCU/listRCU.rst <list_rcu_doc>` for more information on information on using RCU with linked lists.
using RCU with linked lists.
Frequently Asked Questions Frequently Asked Questions
-------------------------- --------------------------
@ -50,7 +49,7 @@ Frequently Asked Questions
- If I am running on a uniprocessor kernel, which can only do one - If I am running on a uniprocessor kernel, which can only do one
thing at a time, why should I wait for a grace period? thing at a time, why should I wait for a grace period?
See :ref:`Documentation/RCU/UP.rst <up_doc>` for more information. See UP.rst for more information.
- How can I see where RCU is currently used in the Linux kernel? - How can I see where RCU is currently used in the Linux kernel?
@ -64,13 +63,13 @@ Frequently Asked Questions
- What guidelines should I follow when writing code that uses RCU? - What guidelines should I follow when writing code that uses RCU?
See the checklist.txt file in this directory. See checklist.rst.
- Why the name "RCU"? - Why the name "RCU"?
"RCU" stands for "read-copy update". "RCU" stands for "read-copy update".
:ref:`Documentation/RCU/listRCU.rst <list_rcu_doc>` has more information on where listRCU.rst has more information on where this name came from, search
this name came from, search for "read-copy update" to find it. for "read-copy update" to find it.
- I hear that RCU is patented? What is with that? - I hear that RCU is patented? What is with that?

View File

@ -8,7 +8,7 @@ This section describes how to use hlist_nulls to
protect read-mostly linked lists and protect read-mostly linked lists and
objects using SLAB_TYPESAFE_BY_RCU allocations. objects using SLAB_TYPESAFE_BY_RCU allocations.
Please read the basics in Documentation/RCU/listRCU.rst Please read the basics in listRCU.rst.
Using 'nulls' Using 'nulls'
============= =============

View File

@ -224,7 +224,7 @@ synchronize_rcu()
be delayed. This property results in system resilience in face be delayed. This property results in system resilience in face
of denial-of-service attacks. Code using call_rcu() should limit of denial-of-service attacks. Code using call_rcu() should limit
update rate in order to gain this same sort of resilience. See update rate in order to gain this same sort of resilience. See
checklist.txt for some approaches to limiting the update rate. checklist.rst for some approaches to limiting the update rate.
rcu_assign_pointer() rcu_assign_pointer()
^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^
@ -318,7 +318,7 @@ rcu_dereference()
must prohibit. The rcu_dereference_protected() variant takes must prohibit. The rcu_dereference_protected() variant takes
a lockdep expression to indicate which locks must be acquired a lockdep expression to indicate which locks must be acquired
by the caller. If the indicated protection is not provided, by the caller. If the indicated protection is not provided,
a lockdep splat is emitted. See Documentation/RCU/Design/Requirements/Requirements.rst a lockdep splat is emitted. See Design/Requirements/Requirements.rst
and the API's code comments for more details and example usage. and the API's code comments for more details and example usage.
.. [2] If the list_for_each_entry_rcu() instance might be used by .. [2] If the list_for_each_entry_rcu() instance might be used by
@ -399,8 +399,7 @@ for specialized uses, but are relatively uncommon.
This section shows a simple use of the core RCU API to protect a This section shows a simple use of the core RCU API to protect a
global pointer to a dynamically allocated structure. More-typical global pointer to a dynamically allocated structure. More-typical
uses of RCU may be found in :ref:`listRCU.rst <list_rcu_doc>`, uses of RCU may be found in listRCU.rst, arrayRCU.rst, and NMI-RCU.rst.
:ref:`arrayRCU.rst <array_rcu_doc>`, and :ref:`NMI-RCU.rst <NMI_rcu_doc>`.
:: ::
struct foo { struct foo {
@ -482,10 +481,9 @@ So, to sum up:
RCU read-side critical sections that might be referencing that RCU read-side critical sections that might be referencing that
data item. data item.
See checklist.txt for additional rules to follow when using RCU. See checklist.rst for additional rules to follow when using RCU.
And again, more-typical uses of RCU may be found in :ref:`listRCU.rst And again, more-typical uses of RCU may be found in listRCU.rst,
<list_rcu_doc>`, :ref:`arrayRCU.rst <array_rcu_doc>`, and :ref:`NMI-RCU.rst arrayRCU.rst, and NMI-RCU.rst.
<NMI_rcu_doc>`.
.. _4_whatisRCU: .. _4_whatisRCU:
@ -579,7 +577,7 @@ to avoid having to write your own callback::
kfree_rcu(old_fp, rcu); kfree_rcu(old_fp, rcu);
Again, see checklist.txt for additional rules governing the use of RCU. Again, see checklist.rst for additional rules governing the use of RCU.
.. _5_whatisRCU: .. _5_whatisRCU:
@ -663,7 +661,7 @@ been able to write-acquire the lock otherwise. The smp_mb__after_spinlock()
promotes synchronize_rcu() to a full memory barrier in compliance with promotes synchronize_rcu() to a full memory barrier in compliance with
the "Memory-Barrier Guarantees" listed in: the "Memory-Barrier Guarantees" listed in:
Documentation/RCU/Design/Requirements/Requirements.rst Design/Requirements/Requirements.rst
It is possible to nest rcu_read_lock(), since reader-writer locks may It is possible to nest rcu_read_lock(), since reader-writer locks may
be recursively acquired. Note also that rcu_read_lock() is immune be recursively acquired. Note also that rcu_read_lock() is immune