The branch master has been updated
       via  d6dda392c10a9297b5009339a4656ec5bf53399b (commit)
      from  ac5a61caf87652733545e9c2a9219e5986b6a35a (commit)


- Log -----------------------------------------------------------------
commit d6dda392c10a9297b5009339a4656ec5bf53399b
Author: Vladimir Kotal <vladimir.ko...@oracle.com>
Date:   Fri Jun 21 10:31:05 2019 +0200

    use native atomic increment function on Solaris
    
    Reviewed-by: Paul Dale <paul.d...@oracle.com>
    Reviewed-by: Matt Caswell <m...@openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/9215)

-----------------------------------------------------------------------

Summary of changes:
 crypto/threads_pthread.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/crypto/threads_pthread.c b/crypto/threads_pthread.c
index 0d351ca6fa..c3fd2411db 100644
--- a/crypto/threads_pthread.c
+++ b/crypto/threads_pthread.c
@@ -10,6 +10,10 @@
 #include <openssl/crypto.h>
 #include "internal/cryptlib.h"
 
+#if defined(__sun)
+# include <atomic.h>
+#endif
+
 #if defined(OPENSSL_THREADS) && !defined(CRYPTO_TDEBUG) && 
!defined(OPENSSL_SYS_WINDOWS)
 
 # ifdef PTHREAD_RWLOCK_INITIALIZER
@@ -162,6 +166,12 @@ int CRYPTO_atomic_add(int *val, int amount, int *ret, 
CRYPTO_RWLOCK *lock)
         *ret = __atomic_add_fetch(val, amount, __ATOMIC_ACQ_REL);
         return 1;
     }
+# elif defined(__sun) && (defined(__SunOS_5_10) || defined(__SunOS_5_11))
+    /* This will work for all future Solaris versions. */
+    if (ret != NULL) {
+        *ret = atomic_add_int_nv((volatile unsigned int *)val, amount);
+        return 1;
+    }
 # endif
     if (!CRYPTO_THREAD_write_lock(lock))
         return 0;

Reply via email to