Interrupts are not one path

This figure documents the historical i386 source baseline. Current native x86-64/AArch64 qualification is recorded separately; this is not an ELF64 or native SMP implementation diagram.

Interrupts are not one path CPU exceptions use isr_handler; PIC IRQs are remapped to vectors 32–47; the ring-3 syscall entry uses INT 0x80. irq_handler acknowledges the controller before calling a device handler. The BSP timer increments ticks, wakes sleepers and schedules when the quantum expires; AP entries skip shared tick work. source->exception source->irq source->syscall exception->fault irq->eoi syscall->dispatch eoi->handler handler->tick IRQ0 source x86 interrupt / exception exception CPU exception vectors 0…31 irq PIC IRQ vectors 32…47 syscall INT 0x80 user-callable gate fault isr_handler fault policy / diagnostics eoi irq_handler send EOI before invoking handler handler Registered device handler tick Timer on BSP increment ticks → wake sleepers quantum exhausted → schedule dispatch syscall_handler validate + dispatch note Early EOI prevents a context switch from leaving the PIC in service. AP timer entry returns before shared BSP tick work.
Interrupts are not one path CPU exceptions use isr_handler; PIC IRQs are remapped to vectors 32–47; the ring-3 syscall entry uses INT 0x80. irq_handler acknowledges the controller before calling a device handler. The BSP timer increments ticks, wakes sleepers and schedules when the quantum expires; AP entries skip shared tick work. Early EOI prevents a switch from leaving the PIC in service. AP timer entry returns before shared BSP tick work. source->exception source:e->irq:e source:e->syscall:e irq->eoi eoi->handler handler->tick syscall->dispatch source x86 interrupt / exception exception CPU exceptions · 0…31 isr_handler fault policy / diagnostics irq PIC IRQ · 32…47 eoi irq_handler: send EOI before device handler handler Registered device handler tick IRQ0 on BSP increment ticks → wake sleepers quantum exhausted → schedule syscall INT 0x80 user-callable gate dispatch syscall_handler validate + dispatch

Exceptions, device IRQs and user syscalls share entry machinery but have different dispatch rules.

Text equivalent and source references
  • CPU exceptions use isr_handler; PIC IRQs are remapped to vectors 32–47; the ring-3 syscall entry uses INT 0x80.
  • irq_handler acknowledges the controller before calling a device handler. The BSP timer increments ticks, wakes sleepers and schedules when the quantum expires; AP entries skip shared tick work.

Dispatch tree. Source paths refer to the atlas baseline; the kernel checkout is private.

  • arch/x86/interrupt.asm · ISR / IRQ stubs
  • kernel/core/interrupt.c · irq_handler, timer_handler
  • kernel/core/x86.c · idt_init