- IRQs can interrupt each other. But of same level?
- IRQs can stack up - if same IRQ they can get "lost" (Link). If of different level, will queue up.. lower priority queues up, higher intterupts unless masked.

IRQs are handled by priority and are queued.

### Questions

Higher priority IRQs can happen while lower ones are in progress

Can a signle IRQ happen while one is already in progress? ie Int 2 happen while Int 2 is already in progress? If so does it call again, queue it? or lose it?

MtW: This depends on us: we can do this, but can have issues with debugger etc. Right now, we dont allow it.

One thing to keep in mind: the Hardware IRQ's are mapped to interrupts 0x20-0x2F

### Links

http://en.wikipedia.org/wiki/Interrupt
http://en.wikipedia.org/wiki/Interrupt_request
http://en.wikipedia.org/wiki/IF_%28x86_flag%29\
http://wiki.osdev.org/IRQ
http://www.xml.com/ldd/chapter/book/ch09.html

Interrupt Descriptor Table - http://en.wikipedia.org/wiki/Interrupt_descriptor_table
Interrupt Threads - http://en.wikipedia.org/wiki/Interrupt_handler
Efficiency http://lwn.net/Articles/395783/

### Master PIC

- IRQ 0 — system timer (cannot be changed);
- IRQ 1 — keyboard (cannot be changed);
- IRQ 2 — cascaded signals from IRQs 8–15 (any devices configured to use IRQ 2 will actually be using IRQ 9);
- IRQ 3 — serial port 2 or 4;
- IRQ 4 — serial port 1 or 3;
- IRQ 5 — LPT port 2 or sound card;
- IRQ 6 — floppy disk controller;
- IRQ 7 — LPT port 1 or sound card (8-bit Sound Blaster and compatibles). - Special note on IRQ7, Spurious IRQ http://en.wikipedia.org/wiki/Intel_8259#Spurious_Interrupts

### Slave PIC

- IRQ 8 — real-time clock;
- IRQ 9 — free / open interrupt / available / SCSI (any devices configured to use IRQ 2 will actually be using IRQ 9);
- IRQ 10 — free / open interrupt / available / SCSI / NIC;
- IRQ 11 — free / open interrupt / available / SCSI / NIC;
- IRQ 12 — PS/2 connector mouse;
- IRQ 13 — math co-processor / integrated floating point unit / inter-processor interrupt (Use depends on OS);
- IRQ 14 — primary ATA channel;
- IRQ 15 — secondary ATA channel