From 01038d894fdf6df85aba8b4fdb2cc149f0476da5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Mon, 5 Feb 2024 08:57:23 +0100 Subject: [PATCH] Always use adaptive mutexes on Linux When adaptive mutexes are available (with glibc), always use them. Remove the autoconf switch and also fix the static initializer. --- configure.ac | 24 ------------------------ lib/isc/include/isc/mutex.h | 4 ++++ lib/isc/mutex.c | 2 +- 3 files changed, 5 insertions(+), 25 deletions(-) diff --git a/configure.ac b/configure.ac index 92f40c17ac..cd05a39e3d 100644 --- a/configure.ac +++ b/configure.ac @@ -562,30 +562,6 @@ AC_ARG_WITH([locktype], (adaptive or standard)]), [], [with_locktype="adaptive"]) -AS_CASE([$with_locktype], - [adaptive],[ - AC_MSG_CHECKING([for PTHREAD_MUTEX_ADAPTIVE_NP]) - AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[ - #ifndef _GNU_SOURCE - #define _GNU_SOURCE - #endif - #include - ]], - [[ - return (PTHREAD_MUTEX_ADAPTIVE_NP); - ]] - )], - [AC_MSG_RESULT([using adaptive lock type]) - AC_DEFINE([HAVE_PTHREAD_MUTEX_ADAPTIVE_NP], 1, - [Support for PTHREAD_MUTEX_ADAPTIVE_NP]) ], - [AC_MSG_RESULT([using standard lock type])] - )], - [standard],[AC_MSG_RESULT([using standard lock type])], - [AC_MSG_ERROR([You must specify "adaptive" or "standard" for --with-locktype.])] - ) - AC_CHECK_HEADERS([sched.h]) AC_SEARCH_LIBS([sched_yield],[rt]) diff --git a/lib/isc/include/isc/mutex.h b/lib/isc/include/isc/mutex.h index 45256a6fac..904747e335 100644 --- a/lib/isc/include/isc/mutex.h +++ b/lib/isc/include/isc/mutex.h @@ -23,7 +23,11 @@ #include /* for ISC_R_ codes */ #include +#if 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 e591ffe872..ff9053793d 100644 --- a/lib/isc/mutex.c +++ b/lib/isc/mutex.c @@ -33,7 +33,7 @@ static isc_once_t init_once = ISC_ONCE_INIT; static void mutex_initialize(void) { RUNTIME_CHECK(pthread_mutexattr_init(&isc__mutex_init_attr) == 0); -#ifdef HAVE_PTHREAD_MUTEX_ADAPTIVE_NP +#if defined(PTHREAD_MUTEX_ADAPTIVE_NP) RUNTIME_CHECK(pthread_mutexattr_settype(&isc__mutex_init_attr, PTHREAD_MUTEX_ADAPTIVE_NP) == 0);