[alsa-devel] [PATCH 2/2] alsa-utils: pcmjob.c: use portable way to initialize recursive mutex
attaching the patch, as i currently have problems with git-send-email.
thanks, --JS
From faed06fd4a3b97ee7f4b46c60e3a828e47845d0e Mon Sep 17 00:00:00 2001 From: John Spencer maillist-alsa@barfooze.de Date: Fri, 8 Nov 2013 13:59:41 +0100 Subject: [PATCH] pcmjob.c: use portable way to initialize recursive mutex
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: John Spencer maillist-alsa@barfooze.de Tested-by: John Spencer maillist-alsa@barfooze.de --- alsaloop/pcmjob.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/alsaloop/pcmjob.c b/alsaloop/pcmjob.c index 139b6fd..f32180c 100644 --- a/alsaloop/pcmjob.c +++ b/alsaloop/pcmjob.c @@ -62,11 +62,22 @@ static const char *src_types[] = { }; #endif
-static pthread_mutex_t pcm_open_mutex = - PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; +static pthread_once_t pcm_open_mutex_once = PTHREAD_ONCE_INIT; +static pthread_mutex_t pcm_open_mutex; + +static void pcm_open_init_mutex(void) +{ + pthread_mutexattr_t attr; + + pthread_mutexattr_init(&attr); + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + pthread_mutex_init(&pcm_open_mutex, &attr); + pthread_mutexattr_destroy(&attr); +}
static inline void pcm_open_lock(void) { + pthread_once(&pcm_open_mutex_once, pcm_open_init_mutex); if (workarounds & WORKAROUND_SERIALOPEN) pthread_mutex_lock(&pcm_open_mutex); }
Date 8.11.2013 14:03, John Spencer wrote:
attaching the patch, as i currently have problems with git-send-email.
Applied to our repo. Thanks.
Jaroslav
participants (2)
-
Jaroslav Kysela
-
John Spencer