diff options
author | netchild <netchild@FreeBSD.org> | 2005-07-31 13:51:04 +0000 |
---|---|---|
committer | netchild <netchild@FreeBSD.org> | 2005-07-31 13:51:04 +0000 |
commit | 390c36aab07cbefd3431dcaf2e7def68bd6e75fb (patch) | |
tree | 3ec66b454e488da43ce42dc8ada82c8f0cde65a0 /sys/dev/sound/isa/ess.c | |
parent | 988358baf08228d32968544bc6774ba3616f67ff (diff) | |
download | FreeBSD-src-390c36aab07cbefd3431dcaf2e7def68bd6e75fb.zip FreeBSD-src-390c36aab07cbefd3431dcaf2e7def68bd6e75fb.tar.gz |
- Fixup the locking.
- Don't mark MPSAFE (yet).
Submitted by: Ariff Abdullah <skywizard@MyBSD.org.my>
Diffstat (limited to 'sys/dev/sound/isa/ess.c')
-rw-r--r-- | sys/dev/sound/isa/ess.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/dev/sound/isa/ess.c b/sys/dev/sound/isa/ess.c index 248aebe..64d617c 100644 --- a/sys/dev/sound/isa/ess.c +++ b/sys/dev/sound/isa/ess.c @@ -361,8 +361,11 @@ ess_intr(void *arg) rirq = (src & sc->rch.hwch)? 1 : 0; if (pirq) { - if (sc->pch.run) + if (sc->pch.run) { + ess_unlock(sc); chn_intr(sc->pch.channel); + ess_lock(sc); + } if (sc->pch.stopping) { sc->pch.run = 0; sndbuf_dma(sc->pch.buffer, PCMTRIG_STOP); @@ -375,8 +378,11 @@ ess_intr(void *arg) } if (rirq) { - if (sc->rch.run) + if (sc->rch.run) { + ess_unlock(sc); chn_intr(sc->rch.channel); + ess_lock(sc); + } if (sc->rch.stopping) { sc->rch.run = 0; sndbuf_dma(sc->rch.buffer, PCMTRIG_STOP); |