From nobody Fri Apr 12 01:10:15 2024 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4VFz534PGvz5GWnS; Fri, 12 Apr 2024 01:10:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4VFz532Sm6z4Nmn; Fri, 12 Apr 2024 01:10:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1712884215; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KjCJl1IKZ0Eo9Sj8xx2tSzMtzPBgh4EqQkfmUJaaw6g=; b=ufYmXECMnxpia27wRPH0dSiJ3elsTnUoXlUy9LdrfvKWr96QSnzxIrAvHrXQkJelJbrZO4 R19QdPZ4EacEdawqVyDcIKzdw/OgAzUb3Fqama5jwVSp+SiQnFlj41ZrG+crKly3Cip1pQ CtDQd+KKfE8+e/HiYrLFfGF871UyEK+QvgzLVssH8PmxUZZOrlmzMUsPvrD+nVo8qkQedN MIbNormK8ErfspIP8SYUc3Fc/Q7+mbdoaPMF0p3WhduJuxAE2DftZ9t/xoTfwAKnLsFCE/ vpocbYW/yU4JkJQ/BuTLsyGqsS/kMAGfteRmqNAhz8X2B54e7xpX7pwp9Ds7/A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1712884215; a=rsa-sha256; cv=none; b=bLx4/M9FwzNUTnLgZEypeEKV2IhaKSTPRTXBsTmYzjXCzsdXxpEQNaTwnGb4w6dEVrgCUt ndRpg7aqsswukKijm0eVz0hy5eePkFfERFj3G9OF2z386MkOQdrUhCmKJkU+OM8irzvCD9 EP61ezIxv1ljpoOx7wMY8e2KQfM0QOUZnJtyS++Bhnz/zR4K3rLtLng1m5kCdyaSWkwFsw r3k5X+Y4vcnAdCyG5/khhKJNqL91JHoZz0aO2NjGiMxEbqvBBqNYqgmRsTHnJJrR77Oyie vT6GXF64udbuHmXrhWcuCds2TSrP1qgPN/Q/pUaXofu6rH9sReXXeoRSP9IRnw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1712884215; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KjCJl1IKZ0Eo9Sj8xx2tSzMtzPBgh4EqQkfmUJaaw6g=; b=IWGPVbINnKqy4c5FSQlx/EtVKiQPzlsKELLcNgcTzGtwaZoxMBK/ticZiZHxA+eXgckOFb G8wKRFw5O4scw8/Os0FjaoPeWkPQ99BU22or65tgjq4HtP4W8MNDmjz5soG8JekfABA8LQ KYLSXCxVnB/ebKJS4XEcWUjsvM9/j+0U2Vs0BOFuy4iRT6mWzonsLJRhSgyAGm/C8E+vfc Cs/Po5kUcIL5Tc2aK+q7pyqa9eUodTslSEM+xtUaVUD9MVc9NNVAXEajUU/AFaTYJCiO0h UmCpX/uHiE+W0vBg4mWutWG0RaThtT72jXod6n72LIfAnZ2KhksXO+DfOD8mkQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4VFz53240YzSjl; Fri, 12 Apr 2024 01:10:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 43C1AFUS040718; Fri, 12 Apr 2024 01:10:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 43C1AFOM040709; Fri, 12 Apr 2024 01:10:15 GMT (envelope-from git) Date: Fri, 12 Apr 2024 01:10:15 GMT Message-Id: <202404120110.43C1AFOM040709@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 4dfb88f3dea5 - stable/14 - sound: Get rid of pcm/sndstat.h and turn macros into regular code List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: dev-commits-src-all+owner@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 4dfb88f3dea5708ab3c514736e1c8bab1a4a225c Auto-Submitted: auto-generated The branch stable/14 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=4dfb88f3dea5708ab3c514736e1c8bab1a4a225c commit 4dfb88f3dea5708ab3c514736e1c8bab1a4a225c Author: Christos Margiolis AuthorDate: 2024-03-29 15:29:43 +0000 Commit: Christos Margiolis CommitDate: 2024-04-12 01:09:51 +0000 sound: Get rid of pcm/sndstat.h and turn macros into regular code There is no reason to have macros for this. Putting the code in sndstat_prepare_pcm() directly makes it easier to work with it. No functional change intended. Sponsored by: The FreeBSD Foundation MFC after: 2 weeks Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D44545 (cherry picked from commit 6d1cee1640e1c360917e483ece5ec1bde423b788) --- sys/dev/sound/pcm/sndstat.h | 169 -------------------------------------------- sys/dev/sound/pcm/sound.c | 136 +++++++++++++++++++++++++++++++++-- 2 files changed, 132 insertions(+), 173 deletions(-) diff --git a/sys/dev/sound/pcm/sndstat.h b/sys/dev/sound/pcm/sndstat.h deleted file mode 100644 index 62722e560a54..000000000000 --- a/sys/dev/sound/pcm/sndstat.h +++ /dev/null @@ -1,169 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2007-2009 Ariff Abdullah - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef _SND_SNDSTAT_H_ -#define _SND_SNDSTAT_H_ - -#define SNDSTAT_PREPARE_PCM_ARGS \ - struct sbuf *s, device_t dev, int verbose - -#define SNDSTAT_PREPARE_PCM_BEGIN() do { \ - struct snddev_info *d; \ - struct pcm_channel *c; \ - struct pcm_feeder *f; \ - \ - d = device_get_softc(dev); \ - PCM_BUSYASSERT(d); \ - \ - if (CHN_EMPTY(d, channels.pcm)) { \ - sbuf_printf(s, " (mixer only)"); \ - return (0); \ - } \ - \ - if (verbose < 1) { \ - sbuf_printf(s, " (%s%s%s", \ - d->playcount ? "play" : "", \ - (d->playcount && d->reccount) ? "/" : "", \ - d->reccount ? "rec" : ""); \ - } else { \ - sbuf_printf(s, " (%dp:%dv/%dr:%dv", \ - d->playcount, d->pvchancount, \ - d->reccount, d->rvchancount); \ - } \ - sbuf_printf(s, "%s)%s", \ - ((d->playcount != 0 && d->reccount != 0) && \ - (d->flags & SD_F_SIMPLEX)) ? " simplex" : "", \ - (device_get_unit(dev) == snd_unit) ? " default" : "") - -#define SNDSTAT_PREPARE_PCM_END() \ - if (verbose <= 1) \ - return (0); \ - \ - sbuf_printf(s, "\n\t"); \ - sbuf_printf(s, "snddev flags=0x%b", d->flags, SD_F_BITS); \ - \ - CHN_FOREACH(c, d, channels.pcm) { \ - \ - KASSERT(c->bufhard != NULL && c->bufsoft != NULL, \ - ("hosed pcm channel setup")); \ - \ - sbuf_printf(s, "\n\t"); \ - \ - sbuf_printf(s, "%s[%s]: ", \ - (c->parentchannel != NULL) ? \ - c->parentchannel->name : "", c->name); \ - sbuf_printf(s, "spd %d", c->speed); \ - if (c->speed != sndbuf_getspd(c->bufhard)) \ - sbuf_printf(s, "/%d", \ - sndbuf_getspd(c->bufhard)); \ - sbuf_printf(s, ", fmt 0x%08x", c->format); \ - if (c->format != sndbuf_getfmt(c->bufhard)) \ - sbuf_printf(s, "/0x%08x", \ - sndbuf_getfmt(c->bufhard)); \ - sbuf_printf(s, ", flags 0x%08x, 0x%08x", \ - c->flags, c->feederflags); \ - if (c->pid != -1) \ - sbuf_printf(s, ", pid %d (%s)", \ - c->pid, c->comm); \ - sbuf_printf(s, "\n\t"); \ - \ - sbuf_printf(s, "interrupts %d, ", c->interrupts); \ - \ - if (c->direction == PCMDIR_REC) \ - sbuf_printf(s, \ - "overruns %d, feed %u, hfree %d, " \ - "sfree %d [b:%d/%d/%d|bs:%d/%d/%d]", \ - c->xruns, c->feedcount, \ - sndbuf_getfree(c->bufhard), \ - sndbuf_getfree(c->bufsoft), \ - sndbuf_getsize(c->bufhard), \ - sndbuf_getblksz(c->bufhard), \ - sndbuf_getblkcnt(c->bufhard), \ - sndbuf_getsize(c->bufsoft), \ - sndbuf_getblksz(c->bufsoft), \ - sndbuf_getblkcnt(c->bufsoft)); \ - else \ - sbuf_printf(s, \ - "underruns %d, feed %u, ready %d " \ - "[b:%d/%d/%d|bs:%d/%d/%d]", \ - c->xruns, c->feedcount, \ - sndbuf_getready(c->bufsoft), \ - sndbuf_getsize(c->bufhard), \ - sndbuf_getblksz(c->bufhard), \ - sndbuf_getblkcnt(c->bufhard), \ - sndbuf_getsize(c->bufsoft), \ - sndbuf_getblksz(c->bufsoft), \ - sndbuf_getblkcnt(c->bufsoft)); \ - sbuf_printf(s, "\n\t"); \ - \ - sbuf_printf(s, "channel flags=0x%b", c->flags, \ - CHN_F_BITS); \ - sbuf_printf(s, "\n\t"); \ - \ - sbuf_printf(s, "{%s}", \ - (c->direction == PCMDIR_REC) ? "hardware" : \ - "userland"); \ - sbuf_printf(s, " -> "); \ - f = c->feeder; \ - while (f->source != NULL) \ - f = f->source; \ - while (f != NULL) { \ - sbuf_printf(s, "%s", f->class->name); \ - if (f->desc->type == FEEDER_FORMAT) \ - sbuf_printf(s, "(0x%08x -> 0x%08x)", \ - f->desc->in, f->desc->out); \ - else if (f->desc->type == FEEDER_MATRIX) \ - sbuf_printf(s, "(%d.%d -> %d.%d)", \ - AFMT_CHANNEL(f->desc->in) - \ - AFMT_EXTCHANNEL(f->desc->in), \ - AFMT_EXTCHANNEL(f->desc->in), \ - AFMT_CHANNEL(f->desc->out) - \ - AFMT_EXTCHANNEL(f->desc->out), \ - AFMT_EXTCHANNEL(f->desc->out)); \ - else if (f->desc->type == FEEDER_RATE) \ - sbuf_printf(s, \ - "(0x%08x q:%d %d -> %d)", \ - f->desc->out, \ - FEEDER_GET(f, FEEDRATE_QUALITY), \ - FEEDER_GET(f, FEEDRATE_SRC), \ - FEEDER_GET(f, FEEDRATE_DST)); \ - else \ - sbuf_printf(s, "(0x%08x)", \ - f->desc->out); \ - sbuf_printf(s, " -> "); \ - f = f->parent; \ - } \ - sbuf_printf(s, "{%s}", \ - (c->direction == PCMDIR_REC) ? "userland" : \ - "hardware"); \ - } \ - \ - return (0); \ -} while (0) - -#endif /* !_SND_SNDSTAT_H_ */ diff --git a/sys/dev/sound/pcm/sound.c b/sys/dev/sound/pcm/sound.c index 186e7b194f27..c03e4fa435e1 100644 --- a/sys/dev/sound/pcm/sound.c +++ b/sys/dev/sound/pcm/sound.c @@ -37,7 +37,6 @@ #include #include #include -#include #include #include #include @@ -76,10 +75,139 @@ SYSCTL_STRING(_hw_snd, OID_AUTO, version, CTLFLAG_RD, &snd_driver_version, struct unrhdr *pcmsg_unrhdr = NULL; static int -sndstat_prepare_pcm(SNDSTAT_PREPARE_PCM_ARGS) +sndstat_prepare_pcm(struct sbuf *s, device_t dev, int verbose) { - SNDSTAT_PREPARE_PCM_BEGIN(); - SNDSTAT_PREPARE_PCM_END(); + struct snddev_info *d; + struct pcm_channel *c; + struct pcm_feeder *f; + + d = device_get_softc(dev); + PCM_BUSYASSERT(d); + + if (CHN_EMPTY(d, channels.pcm)) { + sbuf_printf(s, " (mixer only)"); + return (0); + } + + if (verbose < 1) { + sbuf_printf(s, " (%s%s%s", + d->playcount ? "play" : "", + (d->playcount && d->reccount) ? "/" : "", + d->reccount ? "rec" : ""); + } else { + sbuf_printf(s, " (%dp:%dv/%dr:%dv", + d->playcount, d->pvchancount, + d->reccount, d->rvchancount); + } + sbuf_printf(s, "%s)%s", + ((d->playcount != 0 && d->reccount != 0) && + (d->flags & SD_F_SIMPLEX)) ? " simplex" : "", + (device_get_unit(dev) == snd_unit) ? " default" : ""); + + if (verbose <= 1) + return (0); + + sbuf_printf(s, "\n\t"); + sbuf_printf(s, "snddev flags=0x%b", d->flags, SD_F_BITS); + + CHN_FOREACH(c, d, channels.pcm) { + KASSERT(c->bufhard != NULL && c->bufsoft != NULL, + ("hosed pcm channel setup")); + + sbuf_printf(s, "\n\t"); + + sbuf_printf(s, "%s[%s]: ", + (c->parentchannel != NULL) ? + c->parentchannel->name : "", c->name); + sbuf_printf(s, "spd %d", c->speed); + if (c->speed != sndbuf_getspd(c->bufhard)) { + sbuf_printf(s, "/%d", + sndbuf_getspd(c->bufhard)); + } + sbuf_printf(s, ", fmt 0x%08x", c->format); + if (c->format != sndbuf_getfmt(c->bufhard)) { + sbuf_printf(s, "/0x%08x", + sndbuf_getfmt(c->bufhard)); + } + sbuf_printf(s, ", flags 0x%08x, 0x%08x", + c->flags, c->feederflags); + if (c->pid != -1) { + sbuf_printf(s, ", pid %d (%s)", + c->pid, c->comm); + } + sbuf_printf(s, "\n\t"); + + sbuf_printf(s, "interrupts %d, ", c->interrupts); + + if (c->direction == PCMDIR_REC) { + sbuf_printf(s, + "overruns %d, feed %u, hfree %d, " + "sfree %d [b:%d/%d/%d|bs:%d/%d/%d]", + c->xruns, c->feedcount, + sndbuf_getfree(c->bufhard), + sndbuf_getfree(c->bufsoft), + sndbuf_getsize(c->bufhard), + sndbuf_getblksz(c->bufhard), + sndbuf_getblkcnt(c->bufhard), + sndbuf_getsize(c->bufsoft), + sndbuf_getblksz(c->bufsoft), + sndbuf_getblkcnt(c->bufsoft)); + } else { + sbuf_printf(s, + "underruns %d, feed %u, ready %d " + "[b:%d/%d/%d|bs:%d/%d/%d]", + c->xruns, c->feedcount, + sndbuf_getready(c->bufsoft), + sndbuf_getsize(c->bufhard), + sndbuf_getblksz(c->bufhard), + sndbuf_getblkcnt(c->bufhard), + sndbuf_getsize(c->bufsoft), + sndbuf_getblksz(c->bufsoft), + sndbuf_getblkcnt(c->bufsoft)); + } + sbuf_printf(s, "\n\t"); + + sbuf_printf(s, "channel flags=0x%b", c->flags, CHN_F_BITS); + sbuf_printf(s, "\n\t"); + + sbuf_printf(s, "{%s}", + (c->direction == PCMDIR_REC) ? "hardware" : "userland"); + sbuf_printf(s, " -> "); + f = c->feeder; + while (f->source != NULL) + f = f->source; + while (f != NULL) { + sbuf_printf(s, "%s", f->class->name); + if (f->desc->type == FEEDER_FORMAT) { + sbuf_printf(s, "(0x%08x -> 0x%08x)", + f->desc->in, f->desc->out); + } else if (f->desc->type == FEEDER_MATRIX) { + sbuf_printf(s, "(%d.%d -> %d.%d)", + AFMT_CHANNEL(f->desc->in) - + AFMT_EXTCHANNEL(f->desc->in), + AFMT_EXTCHANNEL(f->desc->in), + AFMT_CHANNEL(f->desc->out) - + AFMT_EXTCHANNEL(f->desc->out), + AFMT_EXTCHANNEL(f->desc->out)); + } else if (f->desc->type == FEEDER_RATE) { + sbuf_printf(s, + "(0x%08x q:%d %d -> %d)", + f->desc->out, + FEEDER_GET(f, FEEDRATE_QUALITY), + FEEDER_GET(f, FEEDRATE_SRC), + FEEDER_GET(f, FEEDRATE_DST)); + } else { + sbuf_printf(s, "(0x%08x)", + f->desc->out); + } + sbuf_printf(s, " -> "); + f = f->parent; + } + sbuf_printf(s, "{%s}", + (c->direction == PCMDIR_REC) ? "userland" : "hardware"); + } + + return (0); } void *