All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] alsa-lib: conf.c: use portable way to initialize recursive mutex
@ 2013-11-08 13:03 John Spencer
  2013-11-08 13:57 ` Jaroslav Kysela
  0 siblings, 1 reply; 2+ messages in thread
From: John Spencer @ 2013-11-08 13:03 UTC (permalink / raw)
  To: alsa-devel; +Cc: Timo Teräs

[-- Attachment #1: Type: text/plain, Size: 186 bytes --]

attaching the patch, as i currently have problems with git-send-email,
and it would force me to use the wrong author name.

got the OK from Timo on IRC to send his patch.

thanks,
--JS


[-- Attachment #2: 0001-conf.c-use-portable-way-to-initialize-recursive-mute.patch --]
[-- Type: text/plain, Size: 1784 bytes --]

From dc28b1183af73e205d835414cacc9d9dfdf8af02 Mon Sep 17 00:00:00 2001
From: Timo Teräs <timo.teras@iki.fi>
Date: Fri, 8 Nov 2013 13:17:58 +0100
Subject: [PATCH] conf.c: use portable way to initialize recursive mutex
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not in POSIX, as _NP
(non-portable) suggests.

exposing such a symbol in musl libc would lock in the ABI for all
times and makes it impossible to do future changes to the under-
lying struct without hideous symbol versioning hacks.

use the portable way instead: pthread_once was designed for such
cases.

Signed-off-by: Timo Teräs <timo.teras@iki.fi>
Tested-by: John Spencer <maillist-alsa@barfooze.de>
---
 src/conf.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/conf.c b/src/conf.c
index bfed1c4..5ccc8e1 100644
--- a/src/conf.c
+++ b/src/conf.c
@@ -427,8 +427,8 @@ beginning:</P>
 #ifndef DOC_HIDDEN
 
 #ifdef HAVE_LIBPTHREAD
-static pthread_mutex_t snd_config_update_mutex =
-				PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
+static pthread_mutex_t snd_config_update_mutex;
+static pthread_once_t snd_config_update_mutex_once = PTHREAD_ONCE_INIT;
 #endif
 
 struct _snd_config {
@@ -472,8 +472,19 @@ typedef struct {
 
 #ifdef HAVE_LIBPTHREAD
 
+static void snd_config_init_mutex(void)
+{
+	pthread_mutexattr_t attr;
+
+	pthread_mutexattr_init(&attr);
+	pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
+	pthread_mutex_init(&snd_config_update_mutex, &attr);
+	pthread_mutexattr_destroy(&attr);
+}
+
 static inline void snd_config_lock(void)
 {
+	pthread_once(&snd_config_update_mutex_once, snd_config_init_mutex);
 	pthread_mutex_lock(&snd_config_update_mutex);
 }
 
-- 
1.8.4


[-- Attachment #3: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH 1/2] alsa-lib: conf.c: use portable way to initialize recursive mutex
  2013-11-08 13:03 [PATCH 1/2] alsa-lib: conf.c: use portable way to initialize recursive mutex John Spencer
@ 2013-11-08 13:57 ` Jaroslav Kysela
  0 siblings, 0 replies; 2+ messages in thread
From: Jaroslav Kysela @ 2013-11-08 13:57 UTC (permalink / raw)
  To: John Spencer; +Cc: alsa-devel, Timo Teräs

Date 8.11.2013 14:03, John Spencer wrote:
> attaching the patch, as i currently have problems with git-send-email,
> and it would force me to use the wrong author name.
> 
> got the OK from Timo on IRC to send his patch.

Applied. Thanks.

				Jaroslav


-- 
Jaroslav Kysela <perex@perex.cz>
Linux Kernel Sound Maintainer
ALSA Project; Red Hat, Inc.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-11-08 13:58 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-11-08 13:03 [PATCH 1/2] alsa-lib: conf.c: use portable way to initialize recursive mutex John Spencer
2013-11-08 13:57 ` Jaroslav Kysela

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.