.. | .. |
---|
| 1 | +# SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | |
---|
2 | 3 | choice |
---|
3 | 4 | prompt "Preemption Model" |
---|
.. | .. |
---|
37 | 38 | config PREEMPT |
---|
38 | 39 | bool "Preemptible Kernel (Low-Latency Desktop)" |
---|
39 | 40 | depends on !ARCH_NO_PREEMPT |
---|
40 | | - select PREEMPT_COUNT |
---|
| 41 | + select PREEMPTION |
---|
41 | 42 | select UNINLINE_SPIN_UNLOCK if !ARCH_INLINE_SPIN_UNLOCK |
---|
42 | 43 | help |
---|
43 | 44 | This option reduces the latency of the kernel by making |
---|
.. | .. |
---|
54 | 55 | embedded system with latency requirements in the milliseconds |
---|
55 | 56 | range. |
---|
56 | 57 | |
---|
| 58 | +config PREEMPT_RT |
---|
| 59 | + bool "Fully Preemptible Kernel (Real-Time)" |
---|
| 60 | + depends on EXPERT && ARCH_SUPPORTS_RT |
---|
| 61 | + select PREEMPTION |
---|
| 62 | + help |
---|
| 63 | + This option turns the kernel into a real-time kernel by replacing |
---|
| 64 | + various locking primitives (spinlocks, rwlocks, etc.) with |
---|
| 65 | + preemptible priority-inheritance aware variants, enforcing |
---|
| 66 | + interrupt threading and introducing mechanisms to break up long |
---|
| 67 | + non-preemptible sections. This makes the kernel, except for very |
---|
| 68 | + low level and critical code paths (entry code, scheduler, low |
---|
| 69 | + level interrupt handling) fully preemptible and brings most |
---|
| 70 | + execution contexts under scheduler control. |
---|
| 71 | + |
---|
| 72 | + Select this if you are building a kernel for systems which |
---|
| 73 | + require real-time guarantees. |
---|
| 74 | + |
---|
57 | 75 | endchoice |
---|
58 | 76 | |
---|
59 | 77 | config PREEMPT_COUNT |
---|
60 | | - bool |
---|
| 78 | + bool |
---|
| 79 | + |
---|
| 80 | +config PREEMPTION |
---|
| 81 | + bool |
---|
| 82 | + select PREEMPT_COUNT |
---|