bus_setup_intr(9)
NAME
- BUS_SETUP_INTR, bus_setup_intr, BUS_TEARDOWN_INTR,
- bus_teardown_intr create, attach and teardown an interrupt handler
SYNOPSIS
#include <sys/param.h> #include <sys/bus.h> int BUS_SETUP_INTR(device_t dev, device_t child, struct resource *irq, int flags, driver_intr_t *intr, void *arg, void **cookiep); int bus_setup_intr(device_t dev, struct resource *r, int flags, driver_intr_t handler, void *arg, void **cookiep); int BUS_TEARDOWN_INTR(device_t dev, device_t child, struct resource *irq, void *cookiep); int bus_teardown_intr(device_t dev, struct resource *r, void *cookiep);
DESCRIPTION
- The BUS_SETUP_INTR() method will create and attach an inter
- rupt handler
to an interrupt previously allocated by the resource manag - er's
BUS_ALLOC_RESOURCE(9) method. The flags are found in and - give the broad
category of interrupt. The flags also tell the interrupt - handlers about
certain device driver characteristics. INTR_FAST means the - handler is
for a timing-critical function. Extra care is take to speed - up these
handlers. Use of this implies INTR_EXCL. INTR_EXCL marks - the handler as
being an exclusive handler for this interrupt. INTR_MPSAFE - tells the
scheduler that the interrupt handler is well behaved in a - preemptive
environment (``SMP safe''), and does not need to be protect - ed by the
``Giant Lock'' mutex. INTR_ENTROPY marks the interrupt as - being a good
source of entropy - this may be used by the entropy device - /dev/random.
The handler intr will be called with the value arg as its - only argument.
- The cookiep argument is a pointer to a void * that
BUS_SETUP_INTR
- write a cookie for the parent bus' use to if it is success
- ful in establishing an interrupt. Driver writers may assume that this
- cookie will be
non-zero. The nexus driver will write 0 on failure to - cookiep.
- The interrupt handler will be detached by
BUS_TEARDOWN_INTR
- cookie needs to be passed to BUS_TEARDOWN_INTR() in order to
- tear down
the correct interrupt handler. Once BUS_TEARDOWN_INTR() re - turns, it is
guaranteed that the interrupt function is not active and - will no longer
be called. - Mutexes are not allowed to be held across calls to these
- functions.
RETURN VALUES
- Zero is returned on success, otherwise an appropriate error
- is returned.
SEE ALSO
random(4), device(9), driver(9)
AUTHORS
- This manual page was written by Jeroen Ruigrok van der Wer
- ven
<asmodai@FreeBSD.org> based on the manual pages for
BUS_CREATE_INTR
- BUS_CONNECT_INTR() written by Doug Rabson <dfr@FreeBSD.org>.
- BSD January 6, 2005