commit 19dc79812b2bdb803bd2e68e15b7a48d6e19c2fa Author: Howard Chu Date: Wed Nov 11 00:02:06 2015 +0000 Tweak robust mutex detection for glibc diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c index 6d9e0a4..b66916c 100644 --- a/libraries/liblmdb/mdb.c +++ b/libraries/liblmdb/mdb.c @@ -262,12 +262,19 @@ union semun { * either.) */ #ifndef MDB_USE_ROBUST -/* Android currently lacks Robust Mutex support */ -#if defined(ANDROID) && defined(MDB_USE_POSIX_MUTEX) && !defined(MDB_USE_ROBUST) -#define MDB_USE_ROBUST 0 -#else -#define MDB_USE_ROBUST 1 -#endif +/* Android currently lacks Robust Mutex support. So does glibc < 2.4. */ +# if defined(MDB_USE_POSIX_MUTEX) && (defined(ANDROID) || \ + (defined(__GLIBC__) && !__GLIBC_PREREQ(2, 4))) +# define MDB_USE_ROBUST 0 +# else +# define MDB_USE_ROBUST 1 +/* glibc < 2.10 only provided _np API */ +# if !__GLIBC_PREREQ(2, 10) +# define PTHREAD_MUTEX_ROBUST PTHREAD_MUTEX_ROBUST_NP +# define pthread_mutexattr_setrobust(attr, flag) pthread_mutexattr_setrobust_np(attr, flag) +# define pthread_mutex_consistent(mutex) pthread_mutex_consistent_np(mutex) +# endif +# endif #endif /* MDB_USE_ROBUST */ #if defined(MDB_OWNERDEAD) && MDB_USE_ROBUST