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