git: 6cf4db422c21 - stable/14 - sound: Move global variable initialization to sound_modevent()

From: Christos Margiolis <christos_at_FreeBSD.org>
Date: Sun, 20 Oct 2024 11:21:35 UTC
The branch stable/14 has been updated by christos:

URL: https://cgit.FreeBSD.org/src/commit/?id=6cf4db422c21ab4a0c39ed3f7c5f5d864c8ea2a2

commit 6cf4db422c21ab4a0c39ed3f7c5f5d864c8ea2a2
Author:     Christos Margiolis <christos@FreeBSD.org>
AuthorDate: 2024-10-18 08:39:46 +0000
Commit:     Christos Margiolis <christos@FreeBSD.org>
CommitDate: 2024-10-20 11:21:04 +0000

    sound: Move global variable initialization to sound_modevent()
    
    There is no reason to initialize global variables in feeder_register(),
    as these variables are unrelated to what the function does. Instead,
    initialize them during sound(4) load.
    
    Sponsored by:   The FreeBSD Foundation
    MFC after:      2 days
    Reviewed by:    zlei
    Differential Revision:  https://reviews.freebsd.org/D46749
    
    (cherry picked from commit 0a0301deb5b6a9c66829dd20cff9d40c5ba9ad92)
---
 sys/dev/sound/pcm/feeder.c | 43 -------------------------------------------
 sys/dev/sound/pcm/sound.c  | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+), 43 deletions(-)

diff --git a/sys/dev/sound/pcm/feeder.c b/sys/dev/sound/pcm/feeder.c
index 716eb07feaae..87437c6d00b5 100644
--- a/sys/dev/sound/pcm/feeder.c
+++ b/sys/dev/sound/pcm/feeder.c
@@ -77,49 +77,6 @@ feeder_register(void *p)
 		SLIST_INSERT_HEAD(&feedertab, fte, link);
 		feedercnt++;
 
-		/* initialize global variables */
-
-		if (snd_verbose < 0 || snd_verbose > 4)
-			snd_verbose = 1;
-
-		if (snd_unit < 0)
-			snd_unit = -1;
-		
-		if (snd_maxautovchans < 0 ||
-		    snd_maxautovchans > SND_MAXVCHANS)
-			snd_maxautovchans = 0;
-
-		if (chn_latency < CHN_LATENCY_MIN ||
-		    chn_latency > CHN_LATENCY_MAX)
-			chn_latency = CHN_LATENCY_DEFAULT;
-
-		if (chn_latency_profile < CHN_LATENCY_PROFILE_MIN ||
-		    chn_latency_profile > CHN_LATENCY_PROFILE_MAX)
-			chn_latency_profile = CHN_LATENCY_PROFILE_DEFAULT;
-
-		if (feeder_rate_min < FEEDRATE_MIN ||
-			    feeder_rate_max < FEEDRATE_MIN ||
-			    feeder_rate_min > FEEDRATE_MAX ||
-			    feeder_rate_max > FEEDRATE_MAX ||
-			    !(feeder_rate_min < feeder_rate_max)) {
-			feeder_rate_min = FEEDRATE_RATEMIN;
-			feeder_rate_max = FEEDRATE_RATEMAX;
-		}
-
-		if (feeder_rate_round < FEEDRATE_ROUNDHZ_MIN ||
-		    	    feeder_rate_round > FEEDRATE_ROUNDHZ_MAX)
-			feeder_rate_round = FEEDRATE_ROUNDHZ;
-
-		if (bootverbose)
-			printf("%s: snd_unit=%d snd_maxautovchans=%d "
-			    "latency=%d "
-			    "feeder_rate_min=%d feeder_rate_max=%d "
-			    "feeder_rate_round=%d\n",
-			    __func__, snd_unit, snd_maxautovchans,
-			    chn_latency,
-			    feeder_rate_min, feeder_rate_max,
-			    feeder_rate_round);
-
 		/* we've got our root feeder so don't veto pcm loading anymore */
 		pcm_veto_load = 0;
 
diff --git a/sys/dev/sound/pcm/sound.c b/sys/dev/sound/pcm/sound.c
index 330c99de14d1..da28a267c81a 100644
--- a/sys/dev/sound/pcm/sound.c
+++ b/sys/dev/sound/pcm/sound.c
@@ -829,6 +829,51 @@ sound_oss_card_info(oss_card_info *si)
 
 /************************************************************************/
 
+static void
+sound_global_init(void)
+{
+	if (snd_verbose < 0 || snd_verbose > 4)
+		snd_verbose = 1;
+
+	if (snd_unit < 0)
+		snd_unit = -1;
+
+	if (snd_maxautovchans < 0 ||
+	    snd_maxautovchans > SND_MAXVCHANS)
+		snd_maxautovchans = 0;
+
+	if (chn_latency < CHN_LATENCY_MIN ||
+	    chn_latency > CHN_LATENCY_MAX)
+		chn_latency = CHN_LATENCY_DEFAULT;
+
+	if (chn_latency_profile < CHN_LATENCY_PROFILE_MIN ||
+	    chn_latency_profile > CHN_LATENCY_PROFILE_MAX)
+		chn_latency_profile = CHN_LATENCY_PROFILE_DEFAULT;
+
+	if (feeder_rate_min < FEEDRATE_MIN ||
+		    feeder_rate_max < FEEDRATE_MIN ||
+		    feeder_rate_min > FEEDRATE_MAX ||
+		    feeder_rate_max > FEEDRATE_MAX ||
+		    !(feeder_rate_min < feeder_rate_max)) {
+		feeder_rate_min = FEEDRATE_RATEMIN;
+		feeder_rate_max = FEEDRATE_RATEMAX;
+	}
+
+	if (feeder_rate_round < FEEDRATE_ROUNDHZ_MIN ||
+		    feeder_rate_round > FEEDRATE_ROUNDHZ_MAX)
+		feeder_rate_round = FEEDRATE_ROUNDHZ;
+
+	if (bootverbose)
+		printf("%s: snd_unit=%d snd_maxautovchans=%d "
+		    "latency=%d "
+		    "feeder_rate_min=%d feeder_rate_max=%d "
+		    "feeder_rate_round=%d\n",
+		    __func__, snd_unit, snd_maxautovchans,
+		    chn_latency,
+		    feeder_rate_min, feeder_rate_max,
+		    feeder_rate_round);
+}
+
 static int
 sound_modevent(module_t mod, int type, void *data)
 {
@@ -839,6 +884,7 @@ sound_modevent(module_t mod, int type, void *data)
 	case MOD_LOAD:
 		pcm_devclass = devclass_create("pcm");
 		pcmsg_unrhdr = new_unrhdr(1, INT_MAX, NULL);
+		sound_global_init();
 		break;
 	case MOD_UNLOAD:
 		if (pcmsg_unrhdr != NULL) {