diff options
author | imp <imp@FreeBSD.org> | 2003-06-12 03:37:28 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2003-06-12 03:37:28 +0000 |
commit | 2c0da83361413653fcb6462f83005ae3f97e9a64 (patch) | |
tree | f63de3e9804db173ad6de64a14c36a45a4238605 /sys/dev/pccbb/pccbbvar.h | |
parent | 78dbcf9c67e2333962eccae3afe7532398f373ae (diff) | |
download | FreeBSD-src-2c0da83361413653fcb6462f83005ae3f97e9a64.zip FreeBSD-src-2c0da83361413653fcb6462f83005ae3f97e9a64.tar.gz |
Make cbb interrupts MPSAFE:
o Register ISR INTR_MPSAFE.
o Loop on KTHREAD_DONE == 0 in the thread.
o Safe the INTR_MPSAFE flag for client drivers (don't know if there are any
CardBus/PCI drivers that are INTR_MPSAFE)
o Read status after acquiring mtx_lock(Giant) rather than before so that we
catch state changes that happen while Giant is being acquired.
o Turn off the CD bit when we see a CD interrupt, and turn it back on after
we've attached/detached the card.
o On suspend, actually set the CBB_SOCKET_MASK to zero rather than oring
in '0' to turn it off on suspend.
o If the ISR that's registerd is MPSAFE, don't acquire Giant around call to
client ISR.
o Fix comments to reflect these changes.
Diffstat (limited to 'sys/dev/pccbb/pccbbvar.h')
-rw-r--r-- | sys/dev/pccbb/pccbbvar.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/dev/pccbb/pccbbvar.h b/sys/dev/pccbb/pccbbvar.h index d77d33b..c050c11 100644 --- a/sys/dev/pccbb/pccbbvar.h +++ b/sys/dev/pccbb/pccbbvar.h @@ -33,8 +33,9 @@ */ struct cbb_intrhand { - driver_intr_t *intr; - void *arg; + driver_intr_t *intr; + void *arg; + uint32_t flags; STAILQ_ENTRY(cbb_intrhand) entries; }; |