mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-03 08:05:21 +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:
@@ -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
|
||||
|
Reference in New Issue
Block a user