config PREEMPT 
 | 
    bool 
 | 
    select PREEMPT_COUNT 
 | 
  
 | 
config PREEMPT_RT_BASE 
 | 
    bool 
 | 
    select PREEMPT 
 | 
  
 | 
config PREEMPT_RT 
 | 
       bool 
 | 
  
 | 
config HAVE_PREEMPT_LAZY 
 | 
    bool 
 | 
  
 | 
config PREEMPT_LAZY 
 | 
    def_bool y if HAVE_PREEMPT_LAZY && PREEMPT_RT_FULL 
 | 
  
 | 
choice 
 | 
    prompt "Preemption Model" 
 | 
    default PREEMPT_NONE 
 | 
  
 | 
config PREEMPT_NONE 
 | 
    bool "No Forced Preemption (Server)" 
 | 
    help 
 | 
      This is the traditional Linux preemption model, geared towards 
 | 
      throughput. It will still provide good latencies most of the 
 | 
      time, but there are no guarantees and occasional longer delays 
 | 
      are possible. 
 | 
  
 | 
      Select this option if you are building a kernel for a server or 
 | 
      scientific/computation system, or if you want to maximize the 
 | 
      raw processing power of the kernel, irrespective of scheduling 
 | 
      latencies. 
 | 
  
 | 
config PREEMPT_VOLUNTARY 
 | 
    bool "Voluntary Kernel Preemption (Desktop)" 
 | 
    depends on !ARCH_NO_PREEMPT 
 | 
    help 
 | 
      This option reduces the latency of the kernel by adding more 
 | 
      "explicit preemption points" to the kernel code. These new 
 | 
      preemption points have been selected to reduce the maximum 
 | 
      latency of rescheduling, providing faster application reactions, 
 | 
      at the cost of slightly lower throughput. 
 | 
  
 | 
      This allows reaction to interactive events by allowing a 
 | 
      low priority process to voluntarily preempt itself even if it 
 | 
      is in kernel mode executing a system call. This allows 
 | 
      applications to run more 'smoothly' even when the system is 
 | 
      under load. 
 | 
  
 | 
      Select this if you are building a kernel for a desktop system. 
 | 
  
 | 
config PREEMPT__LL 
 | 
    bool "Preemptible Kernel (Low-Latency Desktop)" 
 | 
    depends on !ARCH_NO_PREEMPT 
 | 
    select PREEMPT 
 | 
    select UNINLINE_SPIN_UNLOCK if !ARCH_INLINE_SPIN_UNLOCK 
 | 
    help 
 | 
      This option reduces the latency of the kernel by making 
 | 
      all kernel code (that is not executing in a critical section) 
 | 
      preemptible.  This allows reaction to interactive events by 
 | 
      permitting a low priority process to be preempted involuntarily 
 | 
      even if it is in kernel mode executing a system call and would 
 | 
      otherwise not be about to reach a natural preemption point. 
 | 
      This allows applications to run more 'smoothly' even when the 
 | 
      system is under load, at the cost of slightly lower throughput 
 | 
      and a slight runtime overhead to kernel code. 
 | 
  
 | 
      Select this if you are building a kernel for a desktop or 
 | 
      embedded system with latency requirements in the milliseconds 
 | 
      range. 
 | 
  
 | 
config PREEMPT_RTB 
 | 
    bool "Preemptible Kernel (Basic RT)" 
 | 
    select PREEMPT_RT_BASE 
 | 
    help 
 | 
      This option is basically the same as (Low-Latency Desktop) but 
 | 
      enables changes which are preliminary for the full preemptible 
 | 
      RT kernel. 
 | 
  
 | 
config PREEMPT_RT_FULL 
 | 
    bool "Fully Preemptible Kernel (RT)" 
 | 
    depends on IRQ_FORCED_THREADING 
 | 
    select PREEMPT_RT_BASE 
 | 
    select PREEMPT_RCU 
 | 
    select PREEMPT_RT 
 | 
    help 
 | 
      All and everything 
 | 
  
 | 
endchoice 
 | 
  
 | 
config PREEMPT_COUNT 
 | 
       bool 
 |