git: e4458d4d71c4 - stable/14 - sound: Make CHN_REMOVE_SAFE() the default
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 28 Jan 2025 14:05:07 UTC
The branch stable/14 has been updated by christos:
URL: https://cgit.FreeBSD.org/src/commit/?id=e4458d4d71c4c533712ca8417251f0dff6d3168e
commit e4458d4d71c4c533712ca8417251f0dff6d3168e
Author: Christos Margiolis <christos@FreeBSD.org>
AuthorDate: 2025-01-21 12:00:17 +0000
Commit: Christos Margiolis <christos@FreeBSD.org>
CommitDate: 2025-01-28 14:04:52 +0000
sound: Make CHN_REMOVE_SAFE() the default
Commit 27b932e32fab ("sound: Safely remove channel from list in one
pass") optimized CHN_REMOVE_SAFE() to perform almost equally to
CHN_REMOVE(), so we can turn CHN_REMOVE_SAFE() into CHN_REMOVE() without
fears of performance regressions, while also being more robust.
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Reviewed by: dev_submerge.ch
Differential Revision: https://reviews.freebsd.org/D48249
(cherry picked from commit ffcefe5310e084415a2f292a00f4637d4059c40f)
---
sys/dev/sound/pcm/channel.c | 2 +-
sys/dev/sound/pcm/channel.h | 5 +----
2 files changed, 2 insertions(+), 5 deletions(-)
diff --git a/sys/dev/sound/pcm/channel.c b/sys/dev/sound/pcm/channel.c
index 925a82bb170f..4b0ca128391b 100644
--- a/sys/dev/sound/pcm/channel.c
+++ b/sys/dev/sound/pcm/channel.c
@@ -2291,7 +2291,7 @@ chn_trigger(struct pcm_channel *c, int go)
break;
case PCMTRIG_STOP:
case PCMTRIG_ABORT:
- CHN_REMOVE_SAFE(d, c, channels.pcm.busy);
+ CHN_REMOVE(d, c, channels.pcm.busy);
PCM_UNLOCK(d);
break;
default:
diff --git a/sys/dev/sound/pcm/channel.h b/sys/dev/sound/pcm/channel.h
index 58fedd284ecb..6eaad8cc2c0b 100644
--- a/sys/dev/sound/pcm/channel.h
+++ b/sys/dev/sound/pcm/channel.h
@@ -189,9 +189,6 @@ struct pcm_channel {
#define CHN_INSERT_AFTER(x, y, z) \
SLIST_INSERT_AFTER(x, y, CHN_LINK(z))
-#define CHN_REMOVE(holder, elm, list) \
- SLIST_REMOVE(CHN_HEAD(holder, list), elm, pcm_channel, CHN_LINK(list))
-
#define CHN_INSERT_HEAD_SAFE(x, y, z) do { \
struct pcm_channel *t = NULL; \
CHN_FOREACH(t, x, z) { \
@@ -212,7 +209,7 @@ struct pcm_channel {
CHN_INSERT_AFTER(x, y, z); \
} while (0)
-#define CHN_REMOVE_SAFE(holder, elm, list) do { \
+#define CHN_REMOVE(holder, elm, list) do { \
if (CHN_FIRST(holder, list) == (elm)) { \
SLIST_REMOVE_HEAD(CHN_HEAD(holder, list), CHN_LINK(list)); \
} else { \