title: Linux Kernel Preemption Levels
body: <p>I'm wondering what the difference between PREEMPT_NONE and PREEMPT_VOLUNTARY are.  According to the documentation, </p>
  
  <pre><code>This option reduces the latency of the kernel by adding more
  "explicit preemption points" to the kernel code
  </code></pre>
  
  <p>But it does not mention what these points are.  I tried googling it, but I didn't find any more details than the text above (which seems surprising, as I would think this would be a common question).  My main concern is processes starving other processes, so I'm wondering if preemption occurs on timer interrupts with VOLUNTARY.  Of course the more info the better, so I'm wondering what the other preemtion points might be.</p>