]> granicus.if.org Git - php/commitdiff
- Fix #52407 (use __sync_bool_compare_and_swap in fpm_atomic.h if gcc >= 4.1 is used...
authorJérôme Loyet <fat@php.net>
Sat, 21 Aug 2010 06:46:18 +0000 (06:46 +0000)
committerJérôme Loyet <fat@php.net>
Sat, 21 Aug 2010 06:46:18 +0000 (06:46 +0000)
sapi/fpm/fpm/fpm_atomic.h

index 8c287ddfbb00b241855cce9f70a43438dc68d4a9..e2e64d8a5df1b5f2301cc9ed10ad6c8c468e1f23 100644 (file)
 #endif
 #include <sched.h>
 
-#if ( __i386__ || __i386 )
+#if (__GNUC__) && (__GNUC__ >= 4 &&  __GNUC_MINOR__ >= 1)
+
+/**
+ * all the cases below (as provided by upstream) define:
+ * word as atomic_int_t, and
+ * unsigned word as atomic_uint_t
+ * and only use volatile atomic_uint_t as atomic_t
+ */
+
+typedef volatile unsigned long atomic_t;
+#define atomic_cmp_set(a,b,c) __sync_bool_compare_and_swap(a,b,c)
+
+#elif ( __i386__ || __i386 )
 
 typedef int32_t                     atomic_int_t;
 typedef uint32_t                    atomic_uint_t;