git: 6d4c59e26189 - main - sound: Remove PCM_DETACHING(), SD_F_DETACHING and SD_F_DYING
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 26 Nov 2024 14:48:57 UTC
The branch main has been updated by christos:
URL: https://cgit.FreeBSD.org/src/commit/?id=6d4c59e26189a8c19fd0832e89f9b089330cbfcb
commit 6d4c59e26189a8c19fd0832e89f9b089330cbfcb
Author: Christos Margiolis <christos@FreeBSD.org>
AuthorDate: 2024-11-26 14:48:30 +0000
Commit: Christos Margiolis <christos@FreeBSD.org>
CommitDate: 2024-11-26 14:48:30 +0000
sound: Remove PCM_DETACHING(), SD_F_DETACHING and SD_F_DYING
Since SD_F_REGISTERED is cleared at the same time SD_F_DETACHING and
SD_F_DYING are set, and since PCM_DETACHING() is always used in
conjuction with PCM_REGISTERED()/DSP_REGISTERED(), it is enough to just
check SD_F_REGISTERED.
Sponsored by: The FreeBSD Foundation
MFC after: 2 days
Reviewed by: dev_submerge.ch, markj
Differential Revision: https://reviews.freebsd.org/D47463
---
sys/dev/sound/pcm/dsp.c | 12 ++++++------
sys/dev/sound/pcm/mixer.c | 10 +++++-----
sys/dev/sound/pcm/sound.c | 2 --
sys/dev/sound/pcm/sound.h | 48 ++++++++++++++++++++---------------------------
4 files changed, 31 insertions(+), 41 deletions(-)
diff --git a/sys/dev/sound/pcm/dsp.c b/sys/dev/sound/pcm/dsp.c
index 0f19f064a227..ccf240681a25 100644
--- a/sys/dev/sound/pcm/dsp.c
+++ b/sys/dev/sound/pcm/dsp.c
@@ -177,7 +177,7 @@ dsp_close(void *data)
d = priv->sc;
/* At this point pcm_unregister() will destroy all channels anyway. */
- if (!DSP_REGISTERED(d) || PCM_DETACHING(d))
+ if (!DSP_REGISTERED(d))
goto skip;
PCM_GIANT_ENTER(d);
@@ -264,7 +264,7 @@ dsp_open(struct cdev *i_dev, int flags, int mode, struct thread *td)
return (ENODEV);
d = i_dev->si_drv1;
- if (!DSP_REGISTERED(d) || PCM_DETACHING(d))
+ if (!DSP_REGISTERED(d))
return (EBADF);
priv = malloc(sizeof(*priv), M_DEVBUF, M_WAITOK | M_ZERO);
@@ -445,7 +445,7 @@ dsp_io_ops(struct dsp_cdevpriv *priv, struct uio *buf)
("%s(): io train wreck!", __func__));
d = priv->sc;
- if (!DSP_REGISTERED(d) || PCM_DETACHING(d))
+ if (!DSP_REGISTERED(d))
return (EBADF);
PCM_GIANT_ENTER(d);
@@ -664,7 +664,7 @@ dsp_ioctl(struct cdev *i_dev, u_long cmd, caddr_t arg, int mode,
return (err);
d = priv->sc;
- if (!DSP_REGISTERED(d) || PCM_DETACHING(d))
+ if (!DSP_REGISTERED(d))
return (EBADF);
PCM_GIANT_ENTER(d);
@@ -1783,7 +1783,7 @@ dsp_poll(struct cdev *i_dev, int events, struct thread *td)
if ((err = devfs_get_cdevpriv((void **)&priv)) != 0)
return (err);
d = priv->sc;
- if (!DSP_REGISTERED(d) || PCM_DETACHING(d)) {
+ if (!DSP_REGISTERED(d)) {
/* XXX many clients don't understand POLLNVAL */
return (events & (POLLHUP | POLLPRI | POLLIN |
POLLRDNORM | POLLOUT | POLLWRNORM));
@@ -1865,7 +1865,7 @@ dsp_mmap_single(struct cdev *i_dev, vm_ooffset_t *offset,
if ((err = devfs_get_cdevpriv((void **)&priv)) != 0)
return (err);
d = priv->sc;
- if (!DSP_REGISTERED(d) || PCM_DETACHING(d))
+ if (!DSP_REGISTERED(d))
return (EINVAL);
PCM_GIANT_ENTER(d);
diff --git a/sys/dev/sound/pcm/mixer.c b/sys/dev/sound/pcm/mixer.c
index 6d74fa975f03..b5b5814e667b 100644
--- a/sys/dev/sound/pcm/mixer.c
+++ b/sys/dev/sound/pcm/mixer.c
@@ -146,7 +146,7 @@ mixer_set_softpcmvol(struct snd_mixer *m, struct snddev_info *d,
struct pcm_channel *c;
int dropmtx, acquiremtx;
- if (!PCM_REGISTERED(d) || PCM_DETACHING(d))
+ if (!PCM_REGISTERED(d))
return (EINVAL);
if (mtx_owned(m->lock))
@@ -199,7 +199,7 @@ mixer_set_eq(struct snd_mixer *m, struct snddev_info *d,
else
return (EINVAL);
- if (!PCM_REGISTERED(d) || PCM_DETACHING(d))
+ if (!PCM_REGISTERED(d))
return (EINVAL);
if (mtx_owned(m->lock))
@@ -1053,7 +1053,7 @@ mixer_open(struct cdev *i_dev, int flags, int mode, struct thread *td)
m = i_dev->si_drv1;
d = device_get_softc(m->dev);
- if (!PCM_REGISTERED(d) || PCM_DETACHING(d))
+ if (!PCM_REGISTERED(d))
return (EBADF);
/* XXX Need Giant magic entry ??? */
@@ -1209,7 +1209,7 @@ mixer_ioctl(struct cdev *i_dev, u_long cmd, caddr_t arg, int mode,
return (EBADF);
d = device_get_softc(((struct snd_mixer *)i_dev->si_drv1)->dev);
- if (!PCM_REGISTERED(d) || PCM_DETACHING(d))
+ if (!PCM_REGISTERED(d))
return (EBADF);
PCM_GIANT_ENTER(d);
@@ -1447,7 +1447,7 @@ mixer_oss_mixerinfo(struct cdev *i_dev, oss_mixerinfo *mi)
for (i = 0; pcm_devclass != NULL &&
i < devclass_get_maxunit(pcm_devclass); i++) {
d = devclass_get_softc(pcm_devclass, i);
- if (!PCM_REGISTERED(d) || PCM_DETACHING(d)) {
+ if (!PCM_REGISTERED(d)) {
if ((mi->dev == -1 && i == snd_unit) || mi->dev == i) {
mixer_oss_mixerinfo_unavail(mi, i);
return (0);
diff --git a/sys/dev/sound/pcm/sound.c b/sys/dev/sound/pcm/sound.c
index c3e7fee41ab3..4b7bcc64397f 100644
--- a/sys/dev/sound/pcm/sound.c
+++ b/sys/dev/sound/pcm/sound.c
@@ -536,8 +536,6 @@ pcm_unregister(device_t dev)
PCM_LOCK(d);
PCM_WAIT(d);
- d->flags |= SD_F_DETACHING;
- d->flags |= SD_F_DYING;
d->flags &= ~SD_F_REGISTERED;
PCM_ACQUIRE(d);
diff --git a/sys/dev/sound/pcm/sound.h b/sys/dev/sound/pcm/sound.h
index 1d09c48fc06b..f1d435369d36 100644
--- a/sys/dev/sound/pcm/sound.h
+++ b/sys/dev/sound/pcm/sound.h
@@ -104,17 +104,15 @@ struct snd_mixer;
#define SD_F_SIMPLEX 0x00000001
#define SD_F_AUTOVCHAN 0x00000002
#define SD_F_SOFTPCMVOL 0x00000004
-#define SD_F_DYING 0x00000008
-#define SD_F_DETACHING 0x00000010
-#define SD_F_BUSY 0x00000020
-#define SD_F_MPSAFE 0x00000040
-#define SD_F_REGISTERED 0x00000080
-#define SD_F_BITPERFECT 0x00000100
-#define SD_F_VPC 0x00000200 /* volume-per-channel */
-#define SD_F_EQ 0x00000400 /* EQ */
-#define SD_F_EQ_ENABLED 0x00000800 /* EQ enabled */
-#define SD_F_EQ_BYPASSED 0x00001000 /* EQ bypassed */
-#define SD_F_EQ_PC 0x00002000 /* EQ per-channel */
+#define SD_F_BUSY 0x00000008
+#define SD_F_MPSAFE 0x00000010
+#define SD_F_REGISTERED 0x00000020
+#define SD_F_BITPERFECT 0x00000040
+#define SD_F_VPC 0x00000080 /* volume-per-channel */
+#define SD_F_EQ 0x00000100 /* EQ */
+#define SD_F_EQ_ENABLED 0x00000200 /* EQ enabled */
+#define SD_F_EQ_BYPASSED 0x00000400 /* EQ bypassed */
+#define SD_F_EQ_PC 0x00000800 /* EQ per-channel */
#define SD_F_EQ_DEFAULT (SD_F_EQ | SD_F_EQ_ENABLED)
#define SD_F_EQ_MASK (SD_F_EQ | SD_F_EQ_ENABLED | \
@@ -127,26 +125,20 @@ struct snd_mixer;
"\001SIMPLEX" \
"\002AUTOVCHAN" \
"\003SOFTPCMVOL" \
- "\004DYING" \
- "\005DETACHING" \
- "\006BUSY" \
- "\007MPSAFE" \
- "\010REGISTERED" \
- "\011BITPERFECT" \
- "\012VPC" \
- "\013EQ" \
- "\014EQ_ENABLED" \
- "\015EQ_BYPASSED" \
- "\016EQ_PC" \
+ "\004BUSY" \
+ "\005MPSAFE" \
+ "\006REGISTERED" \
+ "\007BITPERFECT" \
+ "\010VPC" \
+ "\011EQ" \
+ "\012EQ_ENABLED" \
+ "\013EQ_BYPASSED" \
+ "\014EQ_PC" \
"\035PRIO_RD" \
"\036PRIO_WR"
-#define PCM_ALIVE(x) ((x) != NULL && (x)->lock != NULL && \
- !((x)->flags & SD_F_DYING))
-#define PCM_REGISTERED(x) (PCM_ALIVE(x) && \
- ((x)->flags & SD_F_REGISTERED))
-
-#define PCM_DETACHING(x) ((x)->flags & SD_F_DETACHING)
+#define PCM_ALIVE(x) ((x) != NULL && (x)->lock != NULL)
+#define PCM_REGISTERED(x) (PCM_ALIVE(x) && ((x)->flags & SD_F_REGISTERED))
#define PCM_CHANCOUNT(d) \
(d->playcount + d->pvchancount + d->reccount + d->rvchancount)