From nobody Tue Nov 18 00:52:02 2025 X-Original-To: dev-commits-src-branches@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 4d9R0324fMz6HHF7; Tue, 18 Nov 2025 00:52:03 +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 "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4d9R026hXhz3xvS; Tue, 18 Nov 2025 00:52:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1763427122; 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=vFe4r/MjF61xxlRsgtBy1PKtcktvMua/ZW/oxNwDrYw=; b=kVIeAh7jmZpBxap5adUVRJQOrI3I8mxYs0b9TAqnYyzRgXWrQ1Ho+qBwtZscCfkuuiVV8t D2uqaWWE9XRfBZF/1CAnr4/sAJOkopip2xbaY/MRdwGkyAk0pOnJ4J+Tt+fUzoHp9JIRpM CWJOiT6IXKa9Rt63lIv706uINbLehED5m0FWrfroWc/rmvO/cnV6ZdmdjTRJGvQiryp3ng fbIixDSU5fgqjM61CLkBMGH0tJhLf2vKwWF7zB1OhVT5sEARjYozPGmnopwOzb9TCy0yI8 xjAeqoVbQw1kKJ4jGyTfxR+c9hCdWg7XNURkV6vuzPb3/Ug6bMGd1JKvJ6s/tg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1763427122; 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=vFe4r/MjF61xxlRsgtBy1PKtcktvMua/ZW/oxNwDrYw=; b=GWt8zLs60ozaMIBMzpPryiJp70n9j+GjJ2nLuXq56ETmqU9AJY2H6zi2lEFNBS+Rf89O/d ZKcauMMb44mh94zqVgJlbTp/Q7lPhngvteIk+PNMUCr++aetPE/qW42yfKhdvl5PJy77Yx tXmV62caNhulwPR+M7/6YTYRyo+kmebNkbIcxPrEC36vcnn/y6fzdZmgpSiuxyOA+gfFgk uTx0nD9/x9YcmTHyWZqinKacYfFqZhJds6cun0d7ofZRZwRyQovXLMdHmCOn0al+ocs1I8 vyzkkZRvfKme3Y4NsOdQQSNf7aD1Zl4TtDNUmwCmj3Se/hMTRwHJplhcqXTl0g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1763427122; a=rsa-sha256; cv=none; b=KtqyA1Mvipp4csM1ez9fRrFn6OacFUHBl28ks+p75FfMfpozZCPCNlLPbItNwlmVSR5O+n AMvDCbyBKUihtnO2pTAQu8kYY23b+NWuXiBYHx5MdvS4pZGrHlln2ASDz6LTN2Hm47Lec+ ptiIlJg+4e7oEvFIjjhblwsY6OzZPHn2nppDv4FJfFSTj/Vse5BkgVYMwA8TsqRGSnR+BR X533Pd5yS/8c7ncyNN5YdCCxrMmRBoPIxVWa968Uux1SW+lulv+wajEk1T3YwFVE/Wq0tX 1mCXITbg7j2ISQibMp3mydPC2ikxOKI3jQHw6TLpK26c3y8Rd61tYP5uXZFKzg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none 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 4d9R026G7CzXVN; Tue, 18 Nov 2025 00:52:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5AI0q2XY045271; Tue, 18 Nov 2025 00:52:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5AI0q2tK045268; Tue, 18 Nov 2025 00:52:02 GMT (envelope-from git) Date: Tue, 18 Nov 2025 00:52:02 GMT Message-Id: <202511180052.5AI0q2tK045268@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: 0a566f2fe96b - stable/15 - sound: Simplify pcm_feederdesc initialization List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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/15 X-Git-Reftype: branch X-Git-Commit: 0a566f2fe96ba29eec84bc365de65dc4352c2cd1 Auto-Submitted: auto-generated The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=0a566f2fe96ba29eec84bc365de65dc4352c2cd1 commit 0a566f2fe96ba29eec84bc365de65dc4352c2cd1 Author: Christos Margiolis AuthorDate: 2025-11-11 12:06:01 +0000 Commit: Christos Margiolis CommitDate: 2025-11-18 00:51:23 +0000 sound: Simplify pcm_feederdesc initialization Currently we initialize a pcm_feederdesc array for every feeder, which is then used by FEEDER_DECLARE(). However, there is no reason for this to be an array, as each feeder has only one description. Additionally, since the only thing we define in that array is the feeder type, remove the pcm_feederdesc definitions altogether, and instead pass their type to FEEDER_DECLARE() directly, which will then initialize the pcm_feederdesc. This also simplifies feeder_register(). Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D53551 (cherry picked from commit 7d33c3d651901c97a683689916c810cf4e26a057) --- sys/dev/sound/pcm/feeder.c | 23 +++++++---------------- sys/dev/sound/pcm/feeder.h | 6 +++--- sys/dev/sound/pcm/feeder_eq.c | 7 +------ sys/dev/sound/pcm/feeder_format.c | 7 +------ sys/dev/sound/pcm/feeder_matrix.c | 7 +------ sys/dev/sound/pcm/feeder_mixer.c | 7 +------ sys/dev/sound/pcm/feeder_rate.c | 7 +------ sys/dev/sound/pcm/feeder_volume.c | 7 +------ 8 files changed, 16 insertions(+), 55 deletions(-) diff --git a/sys/dev/sound/pcm/feeder.c b/sys/dev/sound/pcm/feeder.c index e94e742b263f..0dddfa84543d 100644 --- a/sys/dev/sound/pcm/feeder.c +++ b/sys/dev/sound/pcm/feeder.c @@ -70,22 +70,13 @@ feeder_register(void *p) { struct feeder_class *fc = p; struct feedertab_entry *fte; - int i; - KASSERT(fc->desc != NULL, ("feeder '%s' has no descriptor", fc->name)); - - /* - * beyond this point failure is non-fatal but may result in some - * translations being unavailable - */ - i = 0; - while (fc->desc[i].type > 0) { - fte = malloc(sizeof(*fte), M_FEEDER, M_WAITOK | M_ZERO); - fte->feederclass = fc; - fte->desc = &fc->desc[i]; - SLIST_INSERT_HEAD(&feedertab, fte, link); - i++; - } + KASSERT(fc->desc.type != 0, ("feeder '%s' has no descriptor", fc->name)); + + fte = malloc(sizeof(*fte), M_FEEDER, M_WAITOK | M_ZERO); + fte->feederclass = fc; + fte->desc = &fc->desc; + SLIST_INSERT_HEAD(&feedertab, fte, link); } static void @@ -442,7 +433,7 @@ static struct feeder_class feeder_root_class = { .name = "feeder_root", .methods = feeder_root_methods, .size = sizeof(struct pcm_feeder), - .desc = NULL, + .desc = { 0 }, .data = NULL, }; /* diff --git a/sys/dev/sound/pcm/feeder.h b/sys/dev/sound/pcm/feeder.h index e417d68fea71..d8760f1c87ab 100644 --- a/sys/dev/sound/pcm/feeder.h +++ b/sys/dev/sound/pcm/feeder.h @@ -35,7 +35,7 @@ struct pcm_feederdesc { struct feeder_class { KOBJ_CLASS_FIELDS; - struct pcm_feederdesc *desc; + struct pcm_feederdesc desc; void *data; }; @@ -64,12 +64,12 @@ struct pcm_feeder *feeder_find(struct pcm_channel *c, u_int32_t type); void feeder_printchain(struct pcm_feeder *head); int feeder_chain(struct pcm_channel *); -#define FEEDER_DECLARE(feeder, pdata) \ +#define FEEDER_DECLARE(feeder, type, pdata) \ static struct feeder_class feeder ## _class = { \ .name = #feeder, \ .methods = feeder ## _methods, \ .size = sizeof(struct pcm_feeder), \ - .desc = feeder ## _desc, \ + .desc = { type, 0, 0, 0 }, \ .data = pdata, \ }; \ SYSINIT(feeder, SI_SUB_DRIVERS, SI_ORDER_ANY, feeder_register, \ diff --git a/sys/dev/sound/pcm/feeder_eq.c b/sys/dev/sound/pcm/feeder_eq.c index 88a083a3bfd1..05f5a5b82290 100644 --- a/sys/dev/sound/pcm/feeder_eq.c +++ b/sys/dev/sound/pcm/feeder_eq.c @@ -419,11 +419,6 @@ feed_eq_feed(struct pcm_feeder *f, struct pcm_channel *c, uint8_t *b, return (dst - b); } -static struct pcm_feederdesc feeder_eq_desc[] = { - { FEEDER_EQ, 0, 0, 0 }, - { 0, 0, 0, 0 } -}; - static kobj_method_t feeder_eq_methods[] = { KOBJMETHOD(feeder_init, feed_eq_init), KOBJMETHOD(feeder_free, feed_eq_free), @@ -432,7 +427,7 @@ static kobj_method_t feeder_eq_methods[] = { KOBJMETHOD_END }; -FEEDER_DECLARE(feeder_eq, NULL); +FEEDER_DECLARE(feeder_eq, FEEDER_EQ, NULL); static int32_t feed_eq_scan_preamp_arg(const char *s) diff --git a/sys/dev/sound/pcm/feeder_format.c b/sys/dev/sound/pcm/feeder_format.c index c9679cfeba44..21b54fcafcd7 100644 --- a/sys/dev/sound/pcm/feeder_format.c +++ b/sys/dev/sound/pcm/feeder_format.c @@ -172,11 +172,6 @@ feed_format_feed(struct pcm_feeder *f, struct pcm_channel *c, uint8_t *b, return (dst - b); } -static struct pcm_feederdesc feeder_format_desc[] = { - { FEEDER_FORMAT, 0, 0, 0 }, - { 0, 0, 0, 0 } -}; - static kobj_method_t feeder_format_methods[] = { KOBJMETHOD(feeder_init, feed_format_init), KOBJMETHOD(feeder_free, feed_format_free), @@ -185,4 +180,4 @@ static kobj_method_t feeder_format_methods[] = { KOBJMETHOD_END }; -FEEDER_DECLARE(feeder_format, NULL); +FEEDER_DECLARE(feeder_format, FEEDER_FORMAT, NULL); diff --git a/sys/dev/sound/pcm/feeder_matrix.c b/sys/dev/sound/pcm/feeder_matrix.c index a0af32b887ce..69c7e5962268 100644 --- a/sys/dev/sound/pcm/feeder_matrix.c +++ b/sys/dev/sound/pcm/feeder_matrix.c @@ -398,11 +398,6 @@ feed_matrix_feed(struct pcm_feeder *f, struct pcm_channel *c, uint8_t *b, return (dst - b); } -static struct pcm_feederdesc feeder_matrix_desc[] = { - { FEEDER_MATRIX, 0, 0, 0 }, - { 0, 0, 0, 0 } -}; - static kobj_method_t feeder_matrix_methods[] = { KOBJMETHOD(feeder_init, feed_matrix_init), KOBJMETHOD(feeder_free, feed_matrix_free), @@ -410,7 +405,7 @@ static kobj_method_t feeder_matrix_methods[] = { KOBJMETHOD_END }; -FEEDER_DECLARE(feeder_matrix, NULL); +FEEDER_DECLARE(feeder_matrix, FEEDER_MATRIX, NULL); /* External */ int diff --git a/sys/dev/sound/pcm/feeder_mixer.c b/sys/dev/sound/pcm/feeder_mixer.c index 028e9366aa8e..3c2a58ba145f 100644 --- a/sys/dev/sound/pcm/feeder_mixer.c +++ b/sys/dev/sound/pcm/feeder_mixer.c @@ -358,11 +358,6 @@ feed_mixer_feed(struct pcm_feeder *f, struct pcm_channel *c, uint8_t *b, return (rcnt); } -static struct pcm_feederdesc feeder_mixer_desc[] = { - { FEEDER_MIXER, 0, 0, 0 }, - { 0, 0, 0, 0 } -}; - static kobj_method_t feeder_mixer_methods[] = { KOBJMETHOD(feeder_init, feed_mixer_init), KOBJMETHOD(feeder_free, feed_mixer_free), @@ -371,4 +366,4 @@ static kobj_method_t feeder_mixer_methods[] = { KOBJMETHOD_END }; -FEEDER_DECLARE(feeder_mixer, NULL); +FEEDER_DECLARE(feeder_mixer, FEEDER_MIXER, NULL); diff --git a/sys/dev/sound/pcm/feeder_rate.c b/sys/dev/sound/pcm/feeder_rate.c index 166165e95e65..173a0c1fcd39 100644 --- a/sys/dev/sound/pcm/feeder_rate.c +++ b/sys/dev/sound/pcm/feeder_rate.c @@ -1705,11 +1705,6 @@ z_resampler_feed(struct pcm_feeder *f, struct pcm_channel *c, uint8_t *b, return (count - left); } -static struct pcm_feederdesc feeder_rate_desc[] = { - { FEEDER_RATE, 0, 0, 0 }, - { 0, 0, 0, 0 }, -}; - static kobj_method_t feeder_rate_methods[] = { KOBJMETHOD(feeder_init, z_resampler_init), KOBJMETHOD(feeder_free, z_resampler_free), @@ -1719,4 +1714,4 @@ static kobj_method_t feeder_rate_methods[] = { KOBJMETHOD_END }; -FEEDER_DECLARE(feeder_rate, NULL); +FEEDER_DECLARE(feeder_rate, FEEDER_RATE, NULL); diff --git a/sys/dev/sound/pcm/feeder_volume.c b/sys/dev/sound/pcm/feeder_volume.c index 119ab1b288d8..942f1a273edf 100644 --- a/sys/dev/sound/pcm/feeder_volume.c +++ b/sys/dev/sound/pcm/feeder_volume.c @@ -306,11 +306,6 @@ feed_volume_feed(struct pcm_feeder *f, struct pcm_channel *c, uint8_t *b, return (dst - b); } -static struct pcm_feederdesc feeder_volume_desc[] = { - { FEEDER_VOLUME, 0, 0, 0 }, - { 0, 0, 0, 0 } -}; - static kobj_method_t feeder_volume_methods[] = { KOBJMETHOD(feeder_init, feed_volume_init), KOBJMETHOD(feeder_free, feed_volume_free), @@ -319,7 +314,7 @@ static kobj_method_t feeder_volume_methods[] = { KOBJMETHOD_END }; -FEEDER_DECLARE(feeder_volume, NULL); +FEEDER_DECLARE(feeder_volume, FEEDER_VOLUME, NULL); /* Extern */