@@ -78,7 +78,7 @@ RCU treats a nested set as one big RCU read-side critical section.
78
78
Production-quality implementations of ``rcu_read_lock() `` and
79
79
``rcu_read_unlock() `` are extremely lightweight, and in fact have
80
80
exactly zero overhead in Linux kernels built for production use with
81
- ``CONFIG_PREEMPT =n ``.
81
+ ``CONFIG_PREEMPTION =n ``.
82
82
83
83
This guarantee allows ordering to be enforced with extremely low
84
84
overhead to readers, for example:
@@ -1182,7 +1182,7 @@ and has become decreasingly so as memory sizes have expanded and memory
1182
1182
costs have plummeted. However, as I learned from Matt Mackall's
1183
1183
`bloatwatch <http://elinux.org/Linux_Tiny-FAQ >`__ efforts, memory
1184
1184
footprint is critically important on single-CPU systems with
1185
- non-preemptible (``CONFIG_PREEMPT =n ``) kernels, and thus `tiny
1185
+ non-preemptible (``CONFIG_PREEMPTION =n ``) kernels, and thus `tiny
1186
1186
RCU <https://lkml.kernel.org/g/[email protected] > `__
1187
1187
was born. Josh Triplett has since taken over the small-memory banner
1188
1188
with his `Linux kernel tinification <https://tiny.wiki.kernel.org/ >`__
@@ -1498,7 +1498,7 @@ limitations.
1498
1498
1499
1499
Implementations of RCU for which ``rcu_read_lock() `` and
1500
1500
``rcu_read_unlock() `` generate no code, such as Linux-kernel RCU when
1501
- ``CONFIG_PREEMPT =n ``, can be nested arbitrarily deeply. After all, there
1501
+ ``CONFIG_PREEMPTION =n ``, can be nested arbitrarily deeply. After all, there
1502
1502
is no overhead. Except that if all these instances of
1503
1503
``rcu_read_lock() `` and ``rcu_read_unlock() `` are visible to the
1504
1504
compiler, compilation will eventually fail due to exhausting memory,
@@ -1771,7 +1771,7 @@ implementation can be a no-op.
1771
1771
1772
1772
However, once the scheduler has spawned its first kthread, this early
1773
1773
boot trick fails for ``synchronize_rcu() `` (as well as for
1774
- ``synchronize_rcu_expedited() ``) in ``CONFIG_PREEMPT =y `` kernels. The
1774
+ ``synchronize_rcu_expedited() ``) in ``CONFIG_PREEMPTION =y `` kernels. The
1775
1775
reason is that an RCU read-side critical section might be preempted,
1776
1776
which means that a subsequent ``synchronize_rcu() `` really does have to
1777
1777
wait for something, as opposed to simply returning immediately.
@@ -2010,7 +2010,7 @@ the following:
2010
2010
5 rcu_read_unlock();
2011
2011
6 do_something_with(v, user_v);
2012
2012
2013
- If the compiler did make this transformation in a ``CONFIG_PREEMPT =n `` kernel
2013
+ If the compiler did make this transformation in a ``CONFIG_PREEMPTION =n `` kernel
2014
2014
build, and if ``get_user() `` did page fault, the result would be a quiescent
2015
2015
state in the middle of an RCU read-side critical section. This misplaced
2016
2016
quiescent state could result in line 4 being a use-after-free access,
@@ -2289,10 +2289,10 @@ decides to throw at it.
2289
2289
2290
2290
The Linux kernel is used for real-time workloads, especially in
2291
2291
conjunction with the `-rt
2292
- patchset <https://rt. wiki.kernel .org/index.php/Main_Page > `__. The
2292
+ patchset <https://wiki.linuxfoundation .org/realtime/ > `__. The
2293
2293
real-time-latency response requirements are such that the traditional
2294
2294
approach of disabling preemption across RCU read-side critical sections
2295
- is inappropriate. Kernels built with ``CONFIG_PREEMPT =y `` therefore use
2295
+ is inappropriate. Kernels built with ``CONFIG_PREEMPTION =y `` therefore use
2296
2296
an RCU implementation that allows RCU read-side critical sections to be
2297
2297
preempted. This requirement made its presence known after users made it
2298
2298
clear that an earlier `real-time
@@ -2414,7 +2414,7 @@ includes ``rcu_read_lock_bh()``, ``rcu_read_unlock_bh()``,
2414
2414
``call_rcu_bh() ``, ``rcu_barrier_bh() ``, and
2415
2415
``rcu_read_lock_bh_held() ``. However, the update-side APIs are now
2416
2416
simple wrappers for other RCU flavors, namely RCU-sched in
2417
- CONFIG_PREEMPT =n kernels and RCU-preempt otherwise.
2417
+ CONFIG_PREEMPTION =n kernels and RCU-preempt otherwise.
2418
2418
2419
2419
Sched Flavor (Historical)
2420
2420
~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -2432,11 +2432,11 @@ not have this property, given that any point in the code outside of an
2432
2432
RCU read-side critical section can be a quiescent state. Therefore,
2433
2433
*RCU-sched * was created, which follows “classic” RCU in that an
2434
2434
RCU-sched grace period waits for pre-existing interrupt and NMI
2435
- handlers. In kernels built with ``CONFIG_PREEMPT =n ``, the RCU and
2435
+ handlers. In kernels built with ``CONFIG_PREEMPTION =n ``, the RCU and
2436
2436
RCU-sched APIs have identical implementations, while kernels built with
2437
- ``CONFIG_PREEMPT =y `` provide a separate implementation for each.
2437
+ ``CONFIG_PREEMPTION =y `` provide a separate implementation for each.
2438
2438
2439
- Note well that in ``CONFIG_PREEMPT =y `` kernels,
2439
+ Note well that in ``CONFIG_PREEMPTION =y `` kernels,
2440
2440
``rcu_read_lock_sched() `` and ``rcu_read_unlock_sched() `` disable and
2441
2441
re-enable preemption, respectively. This means that if there was a
2442
2442
preemption attempt during the RCU-sched read-side critical section,
@@ -2599,10 +2599,10 @@ userspace execution also delimit tasks-RCU read-side critical sections.
2599
2599
2600
2600
The tasks-RCU API is quite compact, consisting only of
2601
2601
``call_rcu_tasks() ``, ``synchronize_rcu_tasks() ``, and
2602
- ``rcu_barrier_tasks() ``. In ``CONFIG_PREEMPT =n `` kernels, trampolines
2602
+ ``rcu_barrier_tasks() ``. In ``CONFIG_PREEMPTION =n `` kernels, trampolines
2603
2603
cannot be preempted, so these APIs map to ``call_rcu() ``,
2604
2604
``synchronize_rcu() ``, and ``rcu_barrier() ``, respectively. In
2605
- ``CONFIG_PREEMPT =y `` kernels, trampolines can be preempted, and these
2605
+ ``CONFIG_PREEMPTION =y `` kernels, trampolines can be preempted, and these
2606
2606
three APIs are therefore implemented by separate functions that check
2607
2607
for voluntary context switches.
2608
2608
0 commit comments