diff --git a/configure.ac b/configure.ac index f96d2d5421..2de7d76f77 100644 --- a/configure.ac +++ b/configure.ac @@ -553,14 +553,15 @@ LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" CC="$PTHREAD_CC" -AC_CHECK_FUNCS([pthread_attr_getstacksize pthread_attr_setstacksize pthread_barrier_init pthread_spin_init]) +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])]) -# [pairwise: --with-locktype=adaptive, --with-locktype=standard] -AC_ARG_WITH([locktype], - AS_HELP_STRING([--with-locktype=ARG], - [Specify mutex lock type - (adaptive or standard)]), - [], [with_locktype="adaptive"]) +AC_CHECK_FUNCS([pthread_attr_getstacksize pthread_attr_setstacksize pthread_barrier_init pthread_spin_init]) AC_CHECK_HEADERS([sched.h]) @@ -1712,9 +1713,6 @@ report() { if test "yes" = "$enable_full_report" -o "rbt" = "$zonedb"; then echo " Default cache database type: $cachedb" fi - if test "yes" = "$enable_full_report" -o "standard" = "$with_locktype"; then - echo " Mutex lock type: $with_locktype" - fi test "no" = "$enable_dnstap" || \ echo " Allow 'dnstap' packet logging (--enable-dnstap)" test -z "$MAXMINDDB_LIBS" || echo " GeoIP2 access control (--enable-geoip)" diff --git a/lib/isc/include/isc/mutex.h b/lib/isc/include/isc/mutex.h index 341148a753..df24922336 100644 --- a/lib/isc/include/isc/mutex.h +++ b/lib/isc/include/isc/mutex.h @@ -23,14 +23,6 @@ #include /* for ISC_R_ codes */ #include -#if ISC_MUTEX_ERROR_CHECK && defined(PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP) -#define ISC_MUTEX_INITIALIZER PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP -#elif defined(PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP) -#define ISC_MUTEX_INITIALIZER PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP -#else -#define ISC_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER -#endif - ISC_LANG_BEGINDECLS /* 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