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
Copyright © 2010-2024 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout