Exception/Interrupt
  • /path to kernel source/arch/x86/kernel/entry_32.S
  • /path to kernel source/arch/x86/kernel/irq_32.c
    • do_IRQ
      • irq_enter
      • calling flow handler
        1. desc->handle_irq
        2. generic_handle_irq
          • selects and activates the proper handle_irq function from the IRQ database
      • irq_exit
  • Bottom Halves
  • No matter how many CPUs you have, no two BHs will run at the same time
  • timer BH
    • (include/linux/timer.h)
  • local_bh_disable/local_bh_enable
    • prevent softirqs, tasklets and bottom halves from running on the current CPU.
    • disable soft interrupts on the local CPU, and restore them.
  • Context
  • When the kernel is running directly on behalf of a (usually) user-space process; the code which implements system calls is one example. When the kernel is running in process context, it is allowed to go to sleep if necessary.
page_revision: 20, last_edited: 1237196203|%e %b %Y, %H:%M %Z (%O ago)
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License