Module Name:    src
Committed By:   isaki
Date:           Fri Jan 15 05:34:49 UTC 2021

Modified Files:
        src/sys/dev/audio: audio.c

Log Message:
Improve error messages.
- prefix MD device name if it's considered to be related to the MD driver.
- revise some messages.


To generate a diff of this commit:
cvs rdiff -u -r1.87 -r1.88 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.87 src/sys/dev/audio/audio.c:1.88
--- src/sys/dev/audio/audio.c:1.87	Fri Jan 15 04:09:28 2021
+++ src/sys/dev/audio/audio.c	Fri Jan 15 05:34:49 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: audio.c,v 1.87 2021/01/15 04:09:28 isaki Exp $	*/
+/*	$NetBSD: audio.c,v 1.88 2021/01/15 05:34:49 isaki Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -138,7 +138,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: audio.c,v 1.87 2021/01/15 04:09:28 isaki Exp $");
+__KERNEL_RCSID(0, "$NetBSD: audio.c,v 1.88 2021/01/15 05:34:49 isaki Exp $");
 
 #ifdef _KERNEL_OPT
 #include "audio.h"
@@ -515,6 +515,8 @@ static void audio_mixer_restore(struct a
 static void audio_softintr_rd(void *);
 static void audio_softintr_wr(void *);
 
+static void audio_printf(struct audio_softc *, const char *, ...)
+	__printflike(2, 3);
 static int audio_exlock_mutex_enter(struct audio_softc *);
 static void audio_exlock_mutex_exit(struct audio_softc *);
 static int audio_exlock_enter(struct audio_softc *);
@@ -972,19 +974,20 @@ audioattach(device_t parent, device_t se
 		perror = audio_hw_probe(sc, &phwfmt, AUMODE_PLAY);
 		rerror = audio_hw_probe(sc, &rhwfmt, AUMODE_RECORD);
 		if (perror && rerror) {
-			aprint_error_dev(self, "audio_hw_probe failed, "
-			    "perror = %d, rerror = %d\n", perror, rerror);
+			aprint_error_dev(self,
+			    "audio_hw_probe failed: perror=%d, rerror=%d\n",
+			    perror, rerror);
 			goto bad;
 		}
 		if (perror) {
 			mode &= ~AUMODE_PLAY;
-			aprint_error_dev(self, "audio_hw_probe failed with "
-			    "%d, playback disabled\n", perror);
+			aprint_error_dev(self, "audio_hw_probe failed: "
+			    "errno=%d, playback disabled\n", perror);
 		}
 		if (rerror) {
 			mode &= ~AUMODE_RECORD;
-			aprint_error_dev(self, "audio_hw_probe failed with "
-			    "%d, capture disabled\n", rerror);
+			aprint_error_dev(self, "audio_hw_probe failed: "
+			    "errno=%d, capture disabled\n", rerror);
 		}
 	} else {
 		/*
@@ -994,8 +997,8 @@ audioattach(device_t parent, device_t se
 		audio_format2_t *fmt = has_playback ? &phwfmt : &rhwfmt;
 		error = audio_hw_probe(sc, fmt, mode);
 		if (error) {
-			aprint_error_dev(self, "audio_hw_probe failed, "
-			    "error = %d\n", error);
+			aprint_error_dev(self,
+			    "audio_hw_probe failed: errno=%d\n", error);
 			goto bad;
 		}
 		if (has_playback && has_capture)
@@ -1006,8 +1009,8 @@ audioattach(device_t parent, device_t se
 	/* hw_probe() also validates [pr]hwfmt.  */
 	error = audio_hw_set_format(sc, mode, &phwfmt, &rhwfmt, &pfil, &rfil);
 	if (error) {
-		aprint_error_dev(self, "audio_hw_set_format failed, "
-		    "error = %d\n", error);
+		aprint_error_dev(self,
+		    "audio_hw_set_format failed: errno=%d\n", error);
 		goto bad;
 	}
 
@@ -1017,8 +1020,8 @@ audioattach(device_t parent, device_t se
 	 */
 	error = audio_mixers_init(sc, mode, &phwfmt, &rhwfmt, &pfil, &rfil);
 	if (sc->sc_pmixer == NULL && sc->sc_rmixer == NULL) {
-		aprint_error_dev(self, "audio_mixers_init failed, "
-		    "error = %d\n", error);
+		aprint_error_dev(self,
+		    "audio_mixers_init failed: errno=%d\n", error);
 		goto bad;
 	}
 
@@ -1436,6 +1439,22 @@ audio_attach_mi(const struct audio_hw_if
 }
 
 /*
+ * audio_printf() outputs fmt... with the audio device name and MD device
+ * name prefixed.  If the message is considered to be related to the MD
+ * driver, use this one instead of device_printf().
+ */
+static void
+audio_printf(struct audio_softc *sc, const char *fmt, ...)
+{
+	va_list ap;
+
+	printf("%s(%s): ", device_xname(sc->sc_dev), device_xname(sc->hw_dev));
+	va_start(ap, fmt);
+	vprintf(fmt, ap);
+	va_end(ap);
+}
+
+/*
  * Enter critical section and also keep sc_lock.
  * If successful, returns 0 with sc_lock held.  Otherwise returns errno.
  * Must be called without sc_lock held.
@@ -1581,7 +1600,7 @@ audio_track_waitio(struct audio_softc *s
 	if (error) {
 		TRACET(2, track, "cv_timedwait_sig failed %d", error);
 		if (error == EWOULDBLOCK)
-			device_printf(sc->sc_dev, "device timeout\n");
+			audio_printf(sc, "device timeout\n");
 	} else {
 		TRACET(3, track, "wakeup");
 	}
@@ -2424,8 +2443,8 @@ audio_unlink(struct audio_softc *sc, aud
 		/* XXX what should I do on error? */
 		if (error == EWOULDBLOCK) {
 			mutex_exit(sc->sc_lock);
-			device_printf(sc->sc_dev,
-			    "%s: cv_timedwait_sig failed %d\n",
+			audio_printf(sc,
+			    "%s: cv_timedwait_sig failed: errno=%d\n",
 			    __func__, error);
 			return error;
 		}
@@ -2449,8 +2468,8 @@ audio_unlink(struct audio_softc *sc, aud
 		if (sc->sc_popens == 0 && sc->sc_pbusy) {
 			error = audio_pmixer_halt(sc);
 			if (error) {
-				device_printf(sc->sc_dev,
-				    "halt_output failed with %d (ignored)\n",
+				audio_printf(sc,
+				    "halt_output failed: errno=%d (ignored)\n",
 				    error);
 			}
 		}
@@ -2475,8 +2494,8 @@ audio_unlink(struct audio_softc *sc, aud
 		if (sc->sc_ropens == 0 && sc->sc_rbusy) {
 			error = audio_rmixer_halt(sc);
 			if (error) {
-				device_printf(sc->sc_dev,
-				    "halt_input failed with %d (ignored)\n",
+				audio_printf(sc,
+				    "halt_input failed: errno=%d (ignored)\n",
 				    error);
 			}
 		}
@@ -2594,8 +2613,8 @@ audio_read(struct audio_softc *sc, struc
 			if (error) {
 				audio_track_lock_exit(track);
 				device_printf(sc->sc_dev,
-				    "uiomove(len=%d) failed with %d\n",
-				    len, error);
+				    "%s: uiomove(%d) failed: errno=%d\n",
+				    __func__, len, error);
 				goto abort;
 			}
 			auring_take(usrbuf, len);
@@ -2723,8 +2742,8 @@ audio_write(struct audio_softc *sc, stru
 			if (error) {
 				audio_track_lock_exit(track);
 				device_printf(sc->sc_dev,
-				    "uiomove(len=%d) failed with %d\n",
-				    len, error);
+				    "%s: uiomove(%d) failed: errno=%d\n",
+				    __func__, len, error);
 				goto abort;
 			}
 			auring_push(usrbuf, len);
@@ -3433,7 +3452,7 @@ audio_realloc_usrbuf(audio_track_t *trac
 	    UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW, UVM_INH_NONE,
 	    UVM_ADV_RANDOM, 0));
 	if (error) {
-		device_printf(sc->sc_dev, "uvm_map failed with %d\n", error);
+		device_printf(sc->sc_dev, "uvm_map failed: errno=%d\n", error);
 		uao_detach(track->uobj);	/* release reference */
 		goto abort;
 	}
@@ -3441,7 +3460,7 @@ audio_realloc_usrbuf(audio_track_t *trac
 	error = uvm_map_pageable(kernel_map, vstart, vstart + newvsize,
 	    false, 0);
 	if (error) {
-		device_printf(sc->sc_dev, "uvm_map_pageable failed with %d\n",
+		device_printf(sc->sc_dev, "uvm_map_pageable failed: errno=%d\n",
 		    error);
 		uvm_unmap(kernel_map, vstart, vstart + newvsize);
 		/* uvm_unmap also detach uobj */
@@ -4895,9 +4914,9 @@ audio_mixer_init(struct audio_softc *sc,
 		if (rounded != blksize) {
 			if ((rounded * NBBY) % (mixer->hwbuf.fmt.stride *
 			    mixer->hwbuf.fmt.channels) != 0) {
-				device_printf(sc->sc_dev,
-				    "round_blocksize must return blocksize "
-				    "divisible by framesize: "
+				audio_printf(sc,
+				    "round_blocksize returned blocksize "
+				    "indivisible by framesize: "
 				    "blksize=%d rounded=%d "
 				    "stride=%ubit channels=%u\n",
 				    blksize, rounded,
@@ -4926,16 +4945,17 @@ audio_mixer_init(struct audio_softc *sc,
 		TRACE(1, "round_buffersize %zd -> %zd", bufsize, rounded);
 		if (rounded < bufsize) {
 			/* buffersize needs NBLKHW blocks at least. */
-			device_printf(sc->sc_dev,
-			    "buffersize too small: buffersize=%zd blksize=%d\n",
+			audio_printf(sc,
+			    "round_buffersize returned too small buffersize: "
+			    "buffersize=%zd blksize=%d\n",
 			    rounded, blksize);
 			return EINVAL;
 		}
 		if (rounded % blksize != 0) {
 			/* buffersize/blksize constraint mismatch? */
-			device_printf(sc->sc_dev,
-			    "buffersize must be multiple of blksize: "
-			    "buffersize=%zu blksize=%d\n",
+			audio_printf(sc,
+			    "round_buffersize returned buffersize indivisible "
+			    "by blksize: buffersize=%zu blksize=%d\n",
 			    rounded, blksize);
 			return EINVAL;
 		}
@@ -4955,8 +4975,7 @@ audio_mixer_init(struct audio_softc *sc,
 		/* sc_lock is not necessary for allocm */
 		mixer->hwbuf.mem = sc->hw_if->allocm(sc->hw_hdl, mode, bufsize);
 		if (mixer->hwbuf.mem == NULL) {
-			device_printf(sc->sc_dev, "%s: allocm(%zu) failed\n",
-			    __func__, bufsize);
+			audio_printf(sc, "allocm(%zu) failed\n", bufsize);
 			return ENOMEM;
 		}
 	} else {
@@ -5023,8 +5042,7 @@ audio_mixer_init(struct audio_softc *sc,
 		mixer->codecbuf.mem = audio_realloc(mixer->codecbuf.mem, len);
 		if (mixer->codecbuf.mem == NULL) {
 			device_printf(sc->sc_dev,
-			    "%s: malloc codecbuf(%d) failed\n",
-			    __func__, len);
+			    "malloc codecbuf(%d) failed\n", len);
 			error = ENOMEM;
 			goto abort;
 		}
@@ -5500,8 +5518,9 @@ audio_pmixer_output(struct audio_softc *
 			error = sc->hw_if->trigger_output(sc->hw_hdl,
 			    start, end, blksize, audio_pintr, sc, &params);
 			if (error) {
-				device_printf(sc->sc_dev,
-				    "trigger_output failed with %d\n", error);
+				audio_printf(sc,
+				    "trigger_output failed: errno=%d\n",
+				    error);
 				return;
 			}
 		}
@@ -5512,8 +5531,8 @@ audio_pmixer_output(struct audio_softc *
 		error = sc->hw_if->start_output(sc->hw_hdl,
 		    start, blksize, audio_pintr, sc);
 		if (error) {
-			device_printf(sc->sc_dev,
-			    "start_output failed with %d\n", error);
+			audio_printf(sc,
+			    "start_output failed: errno=%d\n", error);
 			return;
 		}
 	}
@@ -5539,8 +5558,7 @@ audio_pintr(void *arg)
 		return;
 	if (sc->sc_pbusy == false) {
 #if defined(DIAGNOSTIC)
-		device_printf(sc->sc_dev,
-		    "DIAGNOSTIC: %s raised stray interrupt\n",
+		audio_printf(sc, "DIAGNOSTIC: %s raised stray interrupt\n",
 		    device_xname(sc->hw_dev));
 #endif
 		return;
@@ -5771,8 +5789,9 @@ audio_rmixer_input(struct audio_softc *s
 			error = sc->hw_if->trigger_input(sc->hw_hdl,
 			    start, end, blksize, audio_rintr, sc, &params);
 			if (error) {
-				device_printf(sc->sc_dev,
-				    "trigger_input failed with %d\n", error);
+				audio_printf(sc,
+				    "trigger_input failed: errno=%d\n",
+				    error);
 				return;
 			}
 		}
@@ -5783,8 +5802,8 @@ audio_rmixer_input(struct audio_softc *s
 		error = sc->hw_if->start_input(sc->hw_hdl,
 		    start, blksize, audio_rintr, sc);
 		if (error) {
-			device_printf(sc->sc_dev,
-			    "start_input failed with %d\n", error);
+			audio_printf(sc,
+			    "start_input failed: errno=%d\n", error);
 			return;
 		}
 	}
@@ -5810,8 +5829,7 @@ audio_rintr(void *arg)
 		return;
 	if (sc->sc_rbusy == false) {
 #if defined(DIAGNOSTIC)
-		device_printf(sc->sc_dev,
-		    "DIAGNOSTIC: %s raised stray interrupt\n",
+		audio_printf(sc, "DIAGNOSTIC: %s raised stray interrupt\n",
 		    device_xname(sc->hw_dev));
 #endif
 		return;
@@ -6268,9 +6286,8 @@ audio_mixers_init(struct audio_softc *sc
 		}
 		error = audio_mixer_init(sc, AUMODE_PLAY, phwfmt, pfil);
 		if (error) {
-			device_printf(sc->sc_dev,
-			    "configuring playback mode failed with %d\n",
-			    error);
+			/* audio_mixer_init already displayed error code */
+			audio_printf(sc, "configuring playback mode failed\n");
 			kmem_free(sc->sc_pmixer, sizeof(*sc->sc_pmixer));
 			sc->sc_pmixer = NULL;
 			return error;
@@ -6287,9 +6304,8 @@ audio_mixers_init(struct audio_softc *sc
 		}
 		error = audio_mixer_init(sc, AUMODE_RECORD, rhwfmt, rfil);
 		if (error) {
-			device_printf(sc->sc_dev,
-			    "configuring record mode failed with %d\n",
-			    error);
+			/* audio_mixer_init already displayed error code */
+			audio_printf(sc, "configuring record mode failed\n");
 			kmem_free(sc->sc_rmixer, sizeof(*sc->sc_rmixer));
 			sc->sc_rmixer = NULL;
 			return error;
@@ -7218,8 +7234,8 @@ audio_hw_setinfo(struct audio_softc *sc,
 			oldpi->port = au_get_port(sc, &sc->sc_outports);
 		error = au_set_port(sc, &sc->sc_outports, newpi->port);
 		if (error) {
-			device_printf(sc->sc_dev,
-			    "setting play.port=%d failed with %d\n",
+			audio_printf(sc,
+			    "setting play.port=%d failed: errno=%d\n",
 			    newpi->port, error);
 			goto abort;
 		}
@@ -7229,8 +7245,8 @@ audio_hw_setinfo(struct audio_softc *sc,
 			oldri->port = au_get_port(sc, &sc->sc_inports);
 		error = au_set_port(sc, &sc->sc_inports, newri->port);
 		if (error) {
-			device_printf(sc->sc_dev,
-			    "setting record.port=%d failed with %d\n",
+			audio_printf(sc,
+			    "setting record.port=%d failed: errno=%d\n",
 			    newri->port, error);
 			goto abort;
 		}
@@ -7256,8 +7272,8 @@ audio_hw_setinfo(struct audio_softc *sc,
 		error = au_set_gain(sc, &sc->sc_outports,
 		    newpi->gain, pbalance);
 		if (error) {
-			device_printf(sc->sc_dev,
-			    "setting play.gain=%d failed with %d\n",
+			audio_printf(sc,
+			    "setting play.gain=%d failed: errno=%d\n",
 			    newpi->gain, error);
 			goto abort;
 		}
@@ -7266,8 +7282,8 @@ audio_hw_setinfo(struct audio_softc *sc,
 		error = au_set_gain(sc, &sc->sc_inports,
 		    newri->gain, rbalance);
 		if (error) {
-			device_printf(sc->sc_dev,
-			    "setting record.gain=%d failed with %d\n",
+			audio_printf(sc,
+			    "setting record.gain=%d failed: errno=%d\n",
 			    newri->gain, error);
 			goto abort;
 		}
@@ -7276,8 +7292,8 @@ audio_hw_setinfo(struct audio_softc *sc,
 		error = au_set_gain(sc, &sc->sc_outports,
 		    pgain, newpi->balance);
 		if (error) {
-			device_printf(sc->sc_dev,
-			    "setting play.balance=%d failed with %d\n",
+			audio_printf(sc,
+			    "setting play.balance=%d failed: errno=%d\n",
 			    newpi->balance, error);
 			goto abort;
 		}
@@ -7286,8 +7302,8 @@ audio_hw_setinfo(struct audio_softc *sc,
 		error = au_set_gain(sc, &sc->sc_inports,
 		    rgain, newri->balance);
 		if (error) {
-			device_printf(sc->sc_dev,
-			    "setting record.balance=%d failed with %d\n",
+			audio_printf(sc,
+			    "setting record.balance=%d failed: errno=%d\n",
 			    newri->balance, error);
 			goto abort;
 		}
@@ -7298,8 +7314,8 @@ audio_hw_setinfo(struct audio_softc *sc,
 			oldai->monitor_gain = au_get_monitor_gain(sc);
 		error = au_set_monitor_gain(sc, newai->monitor_gain);
 		if (error) {
-			device_printf(sc->sc_dev,
-			    "setting monitor_gain=%d failed with %d\n",
+			audio_printf(sc,
+			    "setting monitor_gain=%d failed: errno=%d\n",
 			    newai->monitor_gain, error);
 			goto abort;
 		}
@@ -7347,8 +7363,7 @@ audio_hw_set_format(struct audio_softc *
 	    &pp, &rp, pfil, rfil);
 	if (error) {
 		mutex_exit(sc->sc_lock);
-		device_printf(sc->sc_dev,
-		    "set_format failed with %d\n", error);
+		audio_printf(sc, "set_format failed: errno=%d\n", error);
 		return error;
 	}
 
@@ -7356,8 +7371,8 @@ audio_hw_set_format(struct audio_softc *
 		error = sc->hw_if->commit_settings(sc->hw_hdl);
 		if (error) {
 			mutex_exit(sc->sc_lock);
-			device_printf(sc->sc_dev,
-			    "commit_settings failed with %d\n", error);
+			audio_printf(sc,
+			    "commit_settings failed: errno=%d\n", error);
 			return error;
 		}
 	}

Reply via email to