]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
New device interrupt code. This defines an interrupt source abstraction
authorjhb <jhb@FreeBSD.org>
Mon, 3 Nov 2003 21:25:52 +0000 (21:25 +0000)
committerjhb <jhb@FreeBSD.org>
Mon, 3 Nov 2003 21:25:52 +0000 (21:25 +0000)
commitd85aa501e2afbaac69438870bfcce9fc0d42cb75
treebdc2c0ce1924654f98cab7e8a0ac5d1227ffce79
parent7ed7a0db1d37a705369625b8aef99f802fefbba3
New device interrupt code.  This defines an interrupt source abstraction
that provides methods via a PIC driver to do things like mask a source,
unmask a source, enable it when the first interrupt handler is added, etc.
The interrupt code provides a table of interrupt sources indexed by IRQ
numbers, or vectors.  These vectors are what new-bus uses for its IRQ
resources and for bus_setup_intr()/bus_teardown_intr().  The interrupt
code then maps that vector a given interrupt source object.  When an
interrupt comes in, the low-level interrupt code looks up the interrupt
source for the source that triggered the interrupt and hands it off to
this code to execute the appropriate handlers.

By having an interrupt source abstraction, this allows us to have different
types of interrupt source providers within the shared IRQ address space.
For example, IRQ 0 may map to pin 0 of the master 8259A PIC, IRQs 1
through 60 may map to pins on various I/O APICs, and IRQs 120 through
128 may map to MSI interrupts for various PCI devices.
sys/amd64/amd64/intr_machdep.c [new file with mode: 0644]
sys/amd64/include/intr_machdep.h [new file with mode: 0644]
sys/i386/i386/intr_machdep.c [new file with mode: 0644]
sys/i386/include/intr_machdep.h [new file with mode: 0644]