mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-11-01 22:58:49 -04:00
conf: Check the availability of PTHREAD_MUTEX_RECURSIVE
Check the availability of PTHREAD_MUTEX_RECURSIVE in configure script and use it only when possible. A fairly old version of glibc still seems working, but just to be sure. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
3cf3fbebdd
commit
e757a95fc9
3 changed files with 13 additions and 0 deletions
|
|
@ -266,6 +266,15 @@ else
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
dnl Check for pthread
|
||||||
|
if test "$HAVE_LIBPTHREAD" = "yes"; then
|
||||||
|
AC_CHECK_DECL(PTHREAD_MUTEX_RECURSIVE,
|
||||||
|
AC_DEFINE(HAVE_PTHREAD_MUTEX_RECURSIVE, [],
|
||||||
|
[Define if your pthreads implementation have PTHREAD_MUTEX_RECURSIVE]),
|
||||||
|
,
|
||||||
|
[#include <pthread.h>])
|
||||||
|
fi
|
||||||
|
|
||||||
dnl Check for __thread
|
dnl Check for __thread
|
||||||
AC_MSG_CHECKING([for __thread])
|
AC_MSG_CHECKING([for __thread])
|
||||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) && ((__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 1) || (__GNUC__ == 4 && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ < 2))
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) && ((__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 1) || (__GNUC__ == 4 && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ < 2))
|
||||||
|
|
|
||||||
|
|
@ -490,7 +490,9 @@ static void snd_config_init_mutex(void)
|
||||||
pthread_mutexattr_t attr;
|
pthread_mutexattr_t attr;
|
||||||
|
|
||||||
pthread_mutexattr_init(&attr);
|
pthread_mutexattr_init(&attr);
|
||||||
|
#ifdef HAVE_PTHREAD_MUTEX_RECURSIVE
|
||||||
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
|
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
|
||||||
|
#endif
|
||||||
pthread_mutex_init(&snd_config_update_mutex, &attr);
|
pthread_mutex_init(&snd_config_update_mutex, &attr);
|
||||||
pthread_mutexattr_destroy(&attr);
|
pthread_mutexattr_destroy(&attr);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2600,7 +2600,9 @@ int snd_pcm_new(snd_pcm_t **pcmp, snd_pcm_type_t type, const char *name,
|
||||||
INIT_LIST_HEAD(&pcm->async_handlers);
|
INIT_LIST_HEAD(&pcm->async_handlers);
|
||||||
#ifdef THREAD_SAFE_API
|
#ifdef THREAD_SAFE_API
|
||||||
pthread_mutexattr_init(&attr);
|
pthread_mutexattr_init(&attr);
|
||||||
|
#ifdef HAVE_PTHREAD_MUTEX_RECURSIVE
|
||||||
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
|
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
|
||||||
|
#endif
|
||||||
pthread_mutex_init(&pcm->lock, &attr);
|
pthread_mutex_init(&pcm->lock, &attr);
|
||||||
/* use locking as default;
|
/* use locking as default;
|
||||||
* each plugin may suppress this in its open call
|
* each plugin may suppress this in its open call
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue