ddi_intr_hilevel(9F)




NAME

     ddi_intr_hilevel - indicate interrupt handler type


SYNOPSIS

     #include <sys/ddi.h>
     #include <sys/sunddi.h>

     int ddi_intr_hilevel(dev_info_t *dip, uint_t inumber);


INTERFACE LEVEL

     Solaris DDI specific (Solaris DDI).


PARAMETERS

     dip   Pointer to dev_info structure.

     inumber
           Interrupt number.


DESCRIPTION

     ddi_intr_hilevel() returns non-zero if the specified  inter-
     rupt is a "high level" interrupt.

     High level interrupts must be handled without  using  system
     services  that  manipulate thread or process states, because
     these interrupts are not blocked by the scheduler.

     In addition, high level interrupt handlers must take care to
     do a minimum of work because they are not preemptable.

     A typical high level interrupt handler would put data into a
     circular  buffer  and  schedule  a soft interrupt by calling
     ddi_trigger_softintr(). The circular buffer  could  be  pro-
     tected  by  using  a mutex that was properly initialized for
     the interrupt handler.

     ddi_intr_hilevel()    can    be    used    before    calling
     ddi_add_intr()  to  decide  which  type of interrupt handler
     should be used. Most device drivers are  designed  with  the
     knowledge that the devices they support will always generate
     low level interrupts,  however  some  devices,  for  example
     those using SBus or VME bus level 6 or 7 interrupts must use
     this test because on some machines those interrupts are high
     level (above the scheduler level) and on other machines they
     are not.


RETURN VALUES

     non-zero
           indicates a high-level interrupt.


CONTEXT

     These functions can be called from user  or  interrupt  con-
     text.


SEE ALSO

     ddi_add_intr(9F), mutex(9F)

     Writing Device Drivers


Man(1) output converted with man2html