diff --git a/configure.ac b/configure.ac index 21404e6fcf..2de7d76f77 100644 --- a/configure.ac +++ b/configure.ac @@ -553,6 +553,14 @@ LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" CC="$PTHREAD_CC" +AC_MSG_CHECKING([for PTHREAD_MUTEX_ADAPTIVE_NP]) +AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[#include ]], + [[(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_HEADERS([sched.h]) diff --git a/lib/isc/mutex.c b/lib/isc/mutex.c index 67815eb7e9..e31ba1339c 100644 --- a/lib/isc/mutex.c +++ b/lib/isc/mutex.c @@ -33,15 +33,14 @@ static isc_once_t init_once = ISC_ONCE_INIT; static void mutex_initialize(void) { 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, - PTHREAD_MUTEX_ERRORCHECK_NP) == - 0); -#elif defined(PTHREAD_MUTEX_ADAPTIVE_NP) + PTHREAD_MUTEX_ERRORCHECK) == 0); +#elif HAVE_PTHREAD_MUTEX_ADAPTIVE_NP RUNTIME_CHECK(pthread_mutexattr_settype(&isc__mutex_init_attr, PTHREAD_MUTEX_ADAPTIVE_NP) == 0); -#endif /* HAVE_PTHREAD_MUTEX_ADAPTIVE_NP */ +#endif } void