cvs commit: src/sys/i386/i386 nexus.c src/sys/i386/isa intr_machdep.c intr_machdep.h src/sys/kern bus_if.m subr_bus.c src/sys/sys bus.h
Matthew Dillon
dillon at crater.dragonflybsd.org
Mon May 23 11:20:09 PDT 2005
dillon 2005/05/23 11:19:55 PDT
DragonFly src repository
Modified files:
sys/i386/i386 nexus.c
sys/i386/isa intr_machdep.c intr_machdep.h
sys/kern bus_if.m subr_bus.c
sys/sys bus.h
Log:
Add NEWBUS infrastructure for interrupt enablement and disablement. This
allows a device to indicate to the interrupt dispatch architecture that it
has enabled or disabled the device interrupt at the source. The dispatch
will then decline to call the handler. This is necessary because it is
possible for the interrupt handler to be called from the interrupt thread
AFTER the device has disabled the hard interrupt. There are two cases:
FIRST CASE:
* hard interrupt occurs
* interrupt thread is scheduled but cannot preempt
* device disables interrupt
* interrupt thread then runs handler while device believes interrupt to
be disabled.
SECOND CASE:
* multiple devices share the same interrupt (#1 and #2)
* device #1 interrupts and schedules the thread
* the handler for ALL devices is run, even if device #2 disabled
its hard interrupt.
Clean up and simplify the interrupt vector code. Always install a MUX
function. The MUX function will check the handler enablement/disablement
state.
Revision Changes Path
1.13 +16 -0 src/sys/i386/i386/nexus.c
1.26 +100 -105 src/sys/i386/isa/intr_machdep.c
1.13 +2 -0 src/sys/i386/isa/intr_machdep.h
1.6 +18 -0 src/sys/kern/bus_if.m
1.25 +28 -0 src/sys/kern/subr_bus.c
1.13 +4 -0 src/sys/sys/bus.h
http://www.dragonflybsd.org/cvsweb/src/sys/i386/i386/nexus.c.diff?r1=1.12&r2=1.13&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/i386/isa/intr_machdep.c.diff?r1=1.25&r2=1.26&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/i386/isa/intr_machdep.h.diff?r1=1.12&r2=1.13&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/bus_if.m.diff?r1=1.5&r2=1.6&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/subr_bus.c.diff?r1=1.24&r2=1.25&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/bus.h.diff?r1=1.12&r2=1.13&f=u
More information about the Commits
mailing list