Remove heartbeat support
[openssl.git] / crypto / threads_pthread.c
index 6f5e812d97ac4bebdbda904650c64b5254df03e7..5cc48afb16f2f484b066da12a0398353d7cbba0e 100644 (file)
@@ -109,9 +109,12 @@ int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b)
 
 int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock)
 {
-#ifdef __ATOMIC_RELAXED
-    *ret = __atomic_add_fetch(val, amount, __ATOMIC_RELAXED);
-#else
+# if defined(__GNUC__) && defined(__ATOMIC_ACQ_REL)
+    if (__atomic_is_lock_free(sizeof(*val), val)) {
+        *ret = __atomic_add_fetch(val, amount, __ATOMIC_ACQ_REL);
+        return 1;
+    }
+# endif
     if (!CRYPTO_THREAD_write_lock(lock))
         return 0;
 
@@ -120,7 +123,6 @@ int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock)
 
     if (!CRYPTO_THREAD_unlock(lock))
         return 0;
-#endif
 
     return 1;
 }