Module Name: src Committed By: mlelstv Date: Sun Apr 23 08:38:53 UTC 2023
Modified Files: src/sys/dev/audio: audio.c Log Message: Be a little bit more informative on device timeout. To generate a diff of this commit: cvs rdiff -u -r1.141 -r1.142 src/sys/dev/audio/audio.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/audio/audio.c diff -u src/sys/dev/audio/audio.c:1.141 src/sys/dev/audio/audio.c:1.142 --- src/sys/dev/audio/audio.c:1.141 Sun Apr 23 08:26:05 2023 +++ src/sys/dev/audio/audio.c Sun Apr 23 08:38:53 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: audio.c,v 1.141 2023/04/23 08:26:05 mlelstv Exp $ */ +/* $NetBSD: audio.c,v 1.142 2023/04/23 08:38:53 mlelstv Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -181,7 +181,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: audio.c,v 1.141 2023/04/23 08:26:05 mlelstv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: audio.c,v 1.142 2023/04/23 08:38:53 mlelstv Exp $"); #ifdef _KERNEL_OPT #include "audio.h" @@ -571,7 +571,8 @@ static void audio_exlock_exit(struct aud static struct audio_softc *audio_sc_acquire_fromfile(audio_file_t *, struct psref *); static void audio_sc_release(struct audio_softc *, struct psref *); -static int audio_track_waitio(struct audio_softc *, audio_track_t *); +static int audio_track_waitio(struct audio_softc *, audio_track_t *, + const char *mess); static int audioclose(struct file *); static int audioread(struct file *, off_t *, struct uio *, kauth_cred_t, int); @@ -1692,7 +1693,8 @@ audio_sc_release(struct audio_softc *sc, * Must be called with sc_lock held. */ static int -audio_track_waitio(struct audio_softc *sc, audio_track_t *track) +audio_track_waitio(struct audio_softc *sc, audio_track_t *track, + const char *mess) { int error; @@ -1714,8 +1716,15 @@ audio_track_waitio(struct audio_softc *s } if (error) { TRACET(2, track, "cv_timedwait_sig failed %d", error); - if (error == EWOULDBLOCK) - audio_printf(sc, "device timeout\n"); + if (error == EWOULDBLOCK) { + audio_ring_t *usrbuf = &track->usrbuf; + audio_ring_t *outbuf = &track->outbuf; + audio_printf(sc, + "%s: device timeout, seq=%d, usrbuf=%d/H%d, outbuf=%d/%d\n", + mess, (int)track->seq, + usrbuf->used, track->usrbuf_usedhigh, + outbuf->used, outbuf->capacity); + } } else { TRACET(3, track, "wakeup"); } @@ -2837,7 +2846,7 @@ audio_read(struct audio_softc *sc, struc } TRACET(3, track, "sleep"); - error = audio_track_waitio(sc, track); + error = audio_track_waitio(sc, track, "audio_read"); if (error) { mutex_exit(sc->sc_lock); return error; @@ -2964,7 +2973,7 @@ audio_write(struct audio_softc *sc, stru TRACET(3, track, "sleep usrbuf=%d/H%d", usrbuf->used, track->usrbuf_usedhigh); - error = audio_track_waitio(sc, track); + error = audio_track_waitio(sc, track, "audio_write"); if (error) { mutex_exit(sc->sc_lock); goto abort; @@ -6418,7 +6427,7 @@ audio_track_drain(struct audio_softc *sc break; TRACET(3, track, "sleep"); - error = audio_track_waitio(sc, track); + error = audio_track_waitio(sc, track, "audio_drain"); if (error) return error;