Quantcast
Channel: Active questions tagged linux-kernel - Stack Overflow
Viewing all articles
Browse latest Browse all 12244

Why disabling interrupts disables kernel preemption and how spin lock disables preemption

$
0
0

I am reading Linux Kernel Development recently, and I have a few questions related to disabling preemption.

  1. In the "Interrupt Control" section of chapter 7, it says:

    Moreover, disabling interrupts also disables kernel preemption.

    I also read from the book that kernel preemption can occur in the follow cases:

    When an interrupt handler exits, before returning to kernel-space.
    When kernel code becomes preemptible again.
    If a task in the kernel explicitly calls schedule()
    If a task in ther kernel blocks (which results in a call to schedule())

    But I can't relate disabling interrupts with these cases.

  2. As far as I know, a spinlock would disable preemption with the preempt_disable() function.

    The post What exactly are "spin-locks"?says:

    On a single core machine a spinlock is simply a "disable interrupts" or "raise IRQL" which prevents thread scheduling completely.

    Does preempt_disable() disable preemption by disabling interrupts?


Viewing all articles
Browse latest Browse all 12244

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>