Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/jmcneill-audiomp3]: src/sys complete the port to audiomp: don't forget ...
details: https://anonhg.NetBSD.org/src/rev/8dee6bb7f2f3
branches: jmcneill-audiomp3
changeset: 771340:8dee6bb7f2f3
user: mrg <mrg%NetBSD.org@localhost>
date: Sun Nov 20 11:41:53 2011 +0000
description:
complete the port to audiomp: don't forget to take sc_intr_lock in the
hardware interrupt routines.
diffstat:
sys/arch/amiga/dev/repulse.c | 9 +++++++--
sys/dev/ebus/cs4231_ebus.c | 15 +++++++++------
sys/dev/sbus/cs4231_sbus.c | 16 ++++++++++------
3 files changed, 26 insertions(+), 14 deletions(-)
diffs (160 lines):
diff -r 24167d1f5bb0 -r 8dee6bb7f2f3 sys/arch/amiga/dev/repulse.c
--- a/sys/arch/amiga/dev/repulse.c Sun Nov 20 11:26:35 2011 +0000
+++ b/sys/arch/amiga/dev/repulse.c Sun Nov 20 11:41:53 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: repulse.c,v 1.17.4.1 2011/11/20 10:27:36 mrg Exp $ */
+/* $NetBSD: repulse.c,v 1.17.4.2 2011/11/20 11:43:55 mrg Exp $ */
/*-
* Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: repulse.c,v 1.17.4.1 2011/11/20 10:27:36 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: repulse.c,v 1.17.4.2 2011/11/20 11:43:55 mrg Exp $");
#include <sys/types.h>
#include <sys/param.h>
@@ -965,6 +965,9 @@
foundone = 0;
sc = tag;
+
+ mutex_spin_enter(&sc->sc_intr_lock);
+
bp = sc->sc_boardp;
status = bp->rhw_status;
@@ -984,5 +987,7 @@
(*sc->sc_captmore)(sc->sc_captarg);
}
+ mutex_spin_exit(&sc->sc_intr_lock);
+
return foundone;
}
diff -r 24167d1f5bb0 -r 8dee6bb7f2f3 sys/dev/ebus/cs4231_ebus.c
--- a/sys/dev/ebus/cs4231_ebus.c Sun Nov 20 11:26:35 2011 +0000
+++ b/sys/dev/ebus/cs4231_ebus.c Sun Nov 20 11:41:53 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: cs4231_ebus.c,v 1.34.4.1 2011/11/20 09:40:19 mrg Exp $ */
+/* $NetBSD: cs4231_ebus.c,v 1.34.4.2 2011/11/20 11:41:53 mrg Exp $ */
/*
* Copyright (c) 2002 Valeriy E. Ushakov
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cs4231_ebus.c,v 1.34.4.1 2011/11/20 09:40:19 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cs4231_ebus.c,v 1.34.4.2 2011/11/20 11:41:53 mrg Exp $");
#ifdef _KERNEL_OPT
#include "opt_sparc_arch.h"
@@ -542,6 +542,8 @@
ebsc = arg;
sc = &ebsc->sc_cs4231;
+ mutex_spin_enter(&sc->sc_ad1848.sc_intr_lock);
+
status = ADREAD(&sc->sc_ad1848, AD1848_STATUS);
#ifdef AUDIO_DEBUG
@@ -582,6 +584,7 @@
ret = 1;
}
+ mutex_spin_exit(&sc->sc_ad1848.sc_intr_lock);
return ret;
}
@@ -592,10 +595,10 @@
struct cs4231_softc *sc = cookie;
struct cs_transfer *t = &sc->sc_playback;
- KERNEL_LOCK(1, NULL);
+ mutex_spin_enter(&sc->sc_ad1848.sc_intr_lock);
if (t->t_intr != NULL)
(*t->t_intr)(t->t_arg);
- KERNEL_UNLOCK_ONE(NULL);
+ mutex_spin_exit(&sc->sc_ad1848.sc_intr_lock);
return 0;
}
@@ -605,9 +608,9 @@
struct cs4231_softc *sc = cookie;
struct cs_transfer *t = &sc->sc_capture;
- KERNEL_LOCK(1, NULL);
+ mutex_spin_enter(&sc->sc_ad1848.sc_intr_lock);
if (t->t_intr != NULL)
(*t->t_intr)(t->t_arg);
- KERNEL_UNLOCK_ONE(NULL);
+ mutex_spin_exit(&sc->sc_ad1848.sc_intr_lock);
return 0;
}
diff -r 24167d1f5bb0 -r 8dee6bb7f2f3 sys/dev/sbus/cs4231_sbus.c
--- a/sys/dev/sbus/cs4231_sbus.c Sun Nov 20 11:26:35 2011 +0000
+++ b/sys/dev/sbus/cs4231_sbus.c Sun Nov 20 11:41:53 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: cs4231_sbus.c,v 1.48.4.1 2011/11/20 09:40:19 mrg Exp $ */
+/* $NetBSD: cs4231_sbus.c,v 1.48.4.2 2011/11/20 11:41:53 mrg Exp $ */
/*-
* Copyright (c) 1998, 1999, 2002, 2007 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cs4231_sbus.c,v 1.48.4.1 2011/11/20 09:40:19 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cs4231_sbus.c,v 1.48.4.2 2011/11/20 11:41:53 mrg Exp $");
#include "audio.h"
#if NAUDIO > 0
@@ -516,6 +516,8 @@
if ((csr & APC_INTR_MASK) == 0) /* any interrupt pedning? */
return 0;
+ mutex_spin_enter(&sc->sc_ad1848.sc_intr_lock);
+
/* write back DMA status to clear interrupt */
bus_space_write_4(sbsc->sc_bt, sbsc->sc_bh, APC_DMA_CSR, csr);
++sc->sc_intrcnt.ev_count;
@@ -596,6 +598,8 @@
/* evcnt? */
}
+ mutex_spin_exit(&sc->sc_ad1848.sc_intr_lock);
+
return 1;
}
@@ -605,11 +609,11 @@
struct cs4231_softc *sc = cookie;
struct cs_transfer *t;
- KERNEL_LOCK(1, NULL);
+ mutex_spin_enter(&sc->sc_ad1848.sc_intr_lock);
t = &sc->sc_playback;
if (t->t_intr != NULL)
(*t->t_intr)(t->t_arg);
- KERNEL_UNLOCK_ONE(NULL);
+ mutex_spin_exit(&sc->sc_ad1848.sc_intr_lock);
return 0;
}
@@ -619,11 +623,11 @@
struct cs4231_softc *sc = cookie;
struct cs_transfer *t;
- KERNEL_LOCK(1, NULL);
+ mutex_spin_enter(&sc->sc_ad1848.sc_intr_lock);
t = &sc->sc_capture;
if (t->t_intr != NULL)
(*t->t_intr)(t->t_arg);
- KERNEL_UNLOCK_ONE(NULL);
+ mutex_spin_exit(&sc->sc_ad1848.sc_intr_lock);
return 0;
}
Home |
Main Index |
Thread Index |
Old Index