mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-23 10:39:16 +00:00
Fix PTHREAD_MUTEX_ADAPTIVE_NP and PTHREAD_MUTEX_ERRORCHECK_NP usage
The PTHREAD_MUTEX_ADAPTIVE_NP and PTHREAD_MUTEX_ERRORCHECK_NP are usually not defines, but enum values, so simple preprocessor check doesn't work. Check for PTHREAD_MUTEX_ADAPTIVE_NP from the autoconf AS_COMPILE_IFELSE block and define HAVE_PTHREAD_MUTEX_ADAPTIVE_NP. This should enable adaptive mutex on Linux and FreeBSD. As PTHREAD_MUTEX_ERRORCHECK actually comes from POSIX and Linux glibc does define it when compatibility macros are being set, we can just use PTHREAD_MUTEX_ERRORCHECK instead of PTHREAD_MUTEX_ERRORCHECK_NP.
This commit is contained in:
parent
f158884344
commit
cc4f99bc6d
@ -553,6 +553,14 @@ LIBS="$PTHREAD_LIBS $LIBS"
|
|||||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||||
CC="$PTHREAD_CC"
|
CC="$PTHREAD_CC"
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for PTHREAD_MUTEX_ADAPTIVE_NP])
|
||||||
|
AC_COMPILE_IFELSE(
|
||||||
|
[AC_LANG_PROGRAM([[#include <pthread.h>]],
|
||||||
|
[[(void)pthread_mutexattr_settype(&(pthread_mutexattr_t){ NULL }, PTHREAD_MUTEX_ADAPTIVE_NP);]])],
|
||||||
|
[AC_MSG_RESULT([yes])
|
||||||
|
AC_DEFINE([HAVE_PTHREAD_MUTEX_ADAPTIVE_NP], [1], [Define to 1 if PTHREAD_MUTEX_ADAPTIVE_NP is available])],
|
||||||
|
[AC_MSG_RESULT([no])])
|
||||||
|
|
||||||
AC_CHECK_FUNCS([pthread_attr_getstacksize pthread_attr_setstacksize pthread_barrier_init pthread_spin_init])
|
AC_CHECK_FUNCS([pthread_attr_getstacksize pthread_attr_setstacksize pthread_barrier_init pthread_spin_init])
|
||||||
|
|
||||||
AC_CHECK_HEADERS([sched.h])
|
AC_CHECK_HEADERS([sched.h])
|
||||||
|
@ -33,15 +33,14 @@ static isc_once_t init_once = ISC_ONCE_INIT;
|
|||||||
static void
|
static void
|
||||||
mutex_initialize(void) {
|
mutex_initialize(void) {
|
||||||
RUNTIME_CHECK(pthread_mutexattr_init(&isc__mutex_init_attr) == 0);
|
RUNTIME_CHECK(pthread_mutexattr_init(&isc__mutex_init_attr) == 0);
|
||||||
#if ISC_MUTEX_ERROR_CHECK && defined(PTHREAD_MUTEX_ERRORCHECK_NP)
|
#if ISC_MUTEX_ERROR_CHECK
|
||||||
RUNTIME_CHECK(pthread_mutexattr_settype(&isc__mutex_init_attr,
|
RUNTIME_CHECK(pthread_mutexattr_settype(&isc__mutex_init_attr,
|
||||||
PTHREAD_MUTEX_ERRORCHECK_NP) ==
|
PTHREAD_MUTEX_ERRORCHECK) == 0);
|
||||||
0);
|
#elif HAVE_PTHREAD_MUTEX_ADAPTIVE_NP
|
||||||
#elif defined(PTHREAD_MUTEX_ADAPTIVE_NP)
|
|
||||||
RUNTIME_CHECK(pthread_mutexattr_settype(&isc__mutex_init_attr,
|
RUNTIME_CHECK(pthread_mutexattr_settype(&isc__mutex_init_attr,
|
||||||
PTHREAD_MUTEX_ADAPTIVE_NP) ==
|
PTHREAD_MUTEX_ADAPTIVE_NP) ==
|
||||||
0);
|
0);
|
||||||
#endif /* HAVE_PTHREAD_MUTEX_ADAPTIVE_NP */
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
x
Reference in New Issue
Block a user