]> git.sur5r.net Git - openldap/commitdiff
Add MDB_NO_ROBUST to disable Robust Mutexes
authorHoward Chu <hyc@openldap.org>
Sat, 31 Oct 2015 02:11:47 +0000 (02:11 +0000)
committerHoward Chu <hyc@openldap.org>
Sat, 31 Oct 2015 02:12:31 +0000 (02:12 +0000)
libraries/liblmdb/Makefile
libraries/liblmdb/mdb.c

index 62b52a9ad1c21c3e9085dbbb019a8274d6b2c3f0..afd0cd8cc82a2f49eac888870136296fe10446ba 100644 (file)
@@ -13,6 +13,7 @@
 # - MDB_FDATASYNC
 # - MDB_FDATASYNC_WORKS
 # - MDB_USE_PWRITEV
+# - MDB_NO_ROBUST
 #
 # There may be other macros in mdb.c of interest. You should
 # read mdb.c before changing any of them.
index 7a21b50ef55273944ccbd8cf8d7dabd655b816a2..ac3ec2b6402d0084742a72614eaf70a3355ef010 100644 (file)
@@ -238,7 +238,25 @@ typedef SSIZE_T    ssize_t;
 #define MDB_OWNERDEAD  EOWNERDEAD      /**< #LOCK_MUTEX0() result if dead owner */
 #endif
 
-#ifdef MDB_OWNERDEAD
+/* Android currently lacks Robust Mutex support */
+#if defined(ANDROID) && defined(MDB_USE_POSIX_MUTEX)
+#define MDB_NO_ROBUST  1
+#endif
+
+/** Some platforms define the EOWNERDEAD error code
+ * even though they don't support Robust Mutexes.
+ * Compile with -DMDB_NO_ROBUST, or use some other
+ * mechanism like -DMDB_USE_SYSV_SEM instead of
+ * -DMDB_USE_POSIX_MUTEX. (SysV semaphores are
+ * also Robust, but some systems don't support them
+ * either.)
+ */
+
+#ifndef MDB_NO_ROBUST
+#define MDB_NO_ROBUST  0
+#endif
+
+#if defined(MDB_OWNERDEAD) && !(MDB_NO_ROBUST)
 #define MDB_ROBUST_SUPPORTED   1
 #endif