You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by yl...@apache.org on 2023/04/21 12:24:53 UTC

svn commit: r1909321 - in /apr/apr/trunk: ./ atomic/netware/ atomic/os390/ atomic/unix/ atomic/win32/ include/arch/unix/

Author: ylavic
Date: Fri Apr 21 12:24:53 2023
New Revision: 1909321

URL: http://svn.apache.org/viewvc?rev=1909321&view=rev
Log:
atomics: Disentangle 32bit and 64bit atomics configuration.

Allow for --enable-nonportable-atomics=upto32bit to disable 64bit atomic
builtins while still allowing for 32bit ones. yes/no still enables/disables
both (if available in the first place..).

By default (no --enable-nonportable-atomics setting), generic 64bit atomics are
forced for 32bit CPUs/systems, until we figure out how to properly align
apr_uint64_t (at least i[56]86 CPUs which could work with 64bit builtins
actually don't if the data is not 64bit aligned, assuming the same for other
32bit CPUs is safer).


Modified:
    apr/apr/trunk/atomic/netware/apr_atomic.c
    apr/apr/trunk/atomic/os390/atomic.c
    apr/apr/trunk/atomic/unix/ia32.c
    apr/apr/trunk/atomic/unix/mutex64.c
    apr/apr/trunk/atomic/unix/ppc.c
    apr/apr/trunk/atomic/unix/s390.c
    apr/apr/trunk/atomic/unix/solaris.c
    apr/apr/trunk/atomic/win32/apr_atomic.c
    apr/apr/trunk/configure.in
    apr/apr/trunk/include/arch/unix/apr_arch_atomic.h

Modified: apr/apr/trunk/atomic/netware/apr_atomic.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/atomic/netware/apr_atomic.c?rev=1909321&r1=1909320&r2=1909321&view=diff
==============================================================================
--- apr/apr/trunk/atomic/netware/apr_atomic.c (original)
+++ apr/apr/trunk/atomic/netware/apr_atomic.c Fri Apr 21 12:24:53 2023
@@ -20,7 +20,7 @@
 
 APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *pool)
 {
-#if defined (NEED_ATOMICS_GENERIC64)
+#if defined(USE_ATOMICS_GENERIC64)
     return apr__atomic_generic64_init(p);
 #else
     return APR_SUCCESS;

Modified: apr/apr/trunk/atomic/os390/atomic.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/atomic/os390/atomic.c?rev=1909321&r1=1909320&r2=1909321&view=diff
==============================================================================
--- apr/apr/trunk/atomic/os390/atomic.c (original)
+++ apr/apr/trunk/atomic/os390/atomic.c Fri Apr 21 12:24:53 2023
@@ -20,7 +20,7 @@
 
 apr_status_t apr_atomic_init(apr_pool_t *p)
 {
-#if defined (NEED_ATOMICS_GENERIC64)
+#if defined(USE_ATOMICS_GENERIC64)
     return apr__atomic_generic64_init(p);
 #else
     return APR_SUCCESS;

Modified: apr/apr/trunk/atomic/unix/ia32.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/atomic/unix/ia32.c?rev=1909321&r1=1909320&r2=1909321&view=diff
==============================================================================
--- apr/apr/trunk/atomic/unix/ia32.c (original)
+++ apr/apr/trunk/atomic/unix/ia32.c Fri Apr 21 12:24:53 2023
@@ -20,7 +20,7 @@
 
 APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *p)
 {
-#if defined (NEED_ATOMICS_GENERIC64)
+#if defined(USE_ATOMICS_GENERIC64)
     return apr__atomic_generic64_init(p);
 #else
     return APR_SUCCESS;

Modified: apr/apr/trunk/atomic/unix/mutex64.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/atomic/unix/mutex64.c?rev=1909321&r1=1909320&r2=1909321&view=diff
==============================================================================
--- apr/apr/trunk/atomic/unix/mutex64.c (original)
+++ apr/apr/trunk/atomic/unix/mutex64.c Fri Apr 21 12:24:53 2023
@@ -17,7 +17,7 @@
 #include "apr_arch_atomic.h"
 #include "apr_thread_mutex.h"
 
-#if defined(USE_ATOMICS_GENERIC) || defined (NEED_ATOMICS_GENERIC64)
+#if defined(USE_ATOMICS_GENERIC64)
 
 #include <stdlib.h>
 

Modified: apr/apr/trunk/atomic/unix/ppc.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/atomic/unix/ppc.c?rev=1909321&r1=1909320&r2=1909321&view=diff
==============================================================================
--- apr/apr/trunk/atomic/unix/ppc.c (original)
+++ apr/apr/trunk/atomic/unix/ppc.c Fri Apr 21 12:24:53 2023
@@ -26,7 +26,7 @@
 
 APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *p)
 {
-#if defined (NEED_ATOMICS_GENERIC64)
+#if defined(USE_ATOMICS_GENERIC64)
     return apr__atomic_generic64_init(p);
 #else
     return APR_SUCCESS;

Modified: apr/apr/trunk/atomic/unix/s390.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/atomic/unix/s390.c?rev=1909321&r1=1909320&r2=1909321&view=diff
==============================================================================
--- apr/apr/trunk/atomic/unix/s390.c (original)
+++ apr/apr/trunk/atomic/unix/s390.c Fri Apr 21 12:24:53 2023
@@ -20,7 +20,7 @@
 
 APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *p)
 {
-#if defined (NEED_ATOMICS_GENERIC64)
+#if defined(USE_ATOMICS_GENERIC64)
     return apr__atomic_generic64_init(p);
 #else
     return APR_SUCCESS;

Modified: apr/apr/trunk/atomic/unix/solaris.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/atomic/unix/solaris.c?rev=1909321&r1=1909320&r2=1909321&view=diff
==============================================================================
--- apr/apr/trunk/atomic/unix/solaris.c (original)
+++ apr/apr/trunk/atomic/unix/solaris.c Fri Apr 21 12:24:53 2023
@@ -22,7 +22,7 @@
 
 APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *p)
 {
-#if defined (NEED_ATOMICS_GENERIC64)
+#if defined(USE_ATOMICS_GENERIC64)
     return apr__atomic_generic64_init(p);
 #else
     return APR_SUCCESS;

Modified: apr/apr/trunk/atomic/win32/apr_atomic.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/atomic/win32/apr_atomic.c?rev=1909321&r1=1909320&r2=1909321&view=diff
==============================================================================
--- apr/apr/trunk/atomic/win32/apr_atomic.c (original)
+++ apr/apr/trunk/atomic/win32/apr_atomic.c Fri Apr 21 12:24:53 2023
@@ -18,7 +18,7 @@
 
 APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *p)
 {
-#if defined (NEED_ATOMICS_GENERIC64)
+#if defined(USE_ATOMICS_GENERIC64)
     return apr__atomic_generic64_init(p);
 #else
     return APR_SUCCESS;

Modified: apr/apr/trunk/configure.in
URL: http://svn.apache.org/viewvc/apr/apr/trunk/configure.in?rev=1909321&r1=1909320&r2=1909321&view=diff
==============================================================================
--- apr/apr/trunk/configure.in (original)
+++ apr/apr/trunk/configure.in Fri Apr 21 12:24:53 2023
@@ -836,21 +836,28 @@ void main(void)
    fi
 fi
 
+force_generic_atomics=no
+force_generic_atomics64=no
+AC_CHECK_SIZEOF(void*, 4)
+if test "x$ac_cv_sizeof_voidp" = "x"; then
+    force_generic_atomics64=yes
+elif test $ac_cv_sizeof_voidp -lt 8; then
+    force_generic_atomics64=yes
+fi
 AC_ARG_ENABLE(nonportable-atomics,
 [  --enable-nonportable-atomics  Use optimized atomic code which may produce nonportable binaries],
-[if test $enableval = yes; then
-   force_generic_atomics=no
- else
+[if test "$enableval" = "upto32bit"; then
+   force_generic_atomics64=yes
+ elif test "$enableval" != "yes"; then
    force_generic_atomics=yes
  fi
 ],
-[force_generic_atomics=no
-case $host_cpu in
-   i[[34]]86) force_generic_atomics=yes;;
+[case $host_cpu in
+   i[[34]]86)
+      force_generic_atomics=yes
+      ;;
    i[[56]]86)
-      if test $has_atomic_builtins != yes; then
-        force_generic_atomics=yes
-      fi
+      force_generic_atomics64=yes
       ;;
    *) case $host in
          *solaris2.10*)
@@ -871,6 +878,10 @@ if test $force_generic_atomics = yes; th
    AC_DEFINE([USE_ATOMICS_GENERIC], 1,
              [Define if use of generic atomics is requested])
 fi
+if test $force_generic_atomics = yes -o $force_generic_atomics64 = yes; then
+   AC_DEFINE([USE_ATOMICS_GENERIC64], 1,
+             [Define if use of 64bit generic atomics is requested])
+fi
 
 AC_SUBST(proc_mutex_is_global)
 AC_SUBST(eolstr)

Modified: apr/apr/trunk/include/arch/unix/apr_arch_atomic.h
URL: http://svn.apache.org/viewvc/apr/apr/trunk/include/arch/unix/apr_arch_atomic.h?rev=1909321&r1=1909320&r2=1909321&view=diff
==============================================================================
--- apr/apr/trunk/include/arch/unix/apr_arch_atomic.h (original)
+++ apr/apr/trunk/include/arch/unix/apr_arch_atomic.h Fri Apr 21 12:24:53 2023
@@ -23,37 +23,35 @@
 #include "apr_atomic.h"
 
 #if defined(USE_ATOMICS_GENERIC)
-/* noop */
+    /* noop */
 #elif HAVE_ATOMIC_BUILTINS
 #   define USE_ATOMICS_BUILTINS
-#   if HAVE_ATOMIC_BUILTINS64
-#   define USE_ATOMICS_BUILTINS64
-#   else
-#   define NEED_ATOMICS_GENERIC64
-#   endif
 #elif defined(SOLARIS2) && SOLARIS2 >= 10
 #   define USE_ATOMICS_SOLARIS
-#   define NEED_ATOMICS_GENERIC64
 #elif defined(__GNUC__) && defined(__STRICT_ANSI__)
 /* force use of generic atomics if building e.g. with -std=c89, which
  * doesn't allow inline asm */
 #   define USE_ATOMICS_GENERIC
 #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
 #   define USE_ATOMICS_IA32
-#   define NEED_ATOMICS_GENERIC64
 #elif defined(__GNUC__) && (defined(__powerpc__) \
                             || defined(__PPC__) \
                             || defined(__ppc__))
 #   define USE_ATOMICS_PPC
-#   define NEED_ATOMICS_GENERIC64
 #elif defined(__GNUC__) && (defined(__s390__) || defined(__s390x__))
 #   define USE_ATOMICS_S390
-#   define NEED_ATOMICS_GENERIC64
 #else
 #   define USE_ATOMICS_GENERIC
 #endif
 
-#if defined(USE_ATOMICS_GENERIC) || defined (NEED_ATOMICS_GENERIC64)
+#if defined(USE_ATOMICS_GENERIC64)
+    /* noop */
+#elif HAVE_ATOMIC_BUILTINS64
+#   define USE_ATOMICS_BUILTINS64
+#else
+#   define USE_ATOMICS_GENERIC64
+#endif
+#if defined(USE_ATOMICS_GENERIC64)
 apr_status_t apr__atomic_generic64_init(apr_pool_t *p);
 #endif