1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
Description: Use GCC's atomic builtins in the FPM SAPI to allow it to
build everywhere.
Origin: vendor
Forwarded: http://bugs.php.net/52407
Last-Update: 2010-07-28
--- a/sapi/fpm/fpm/fpm_atomic.h
+++ b/sapi/fpm/fpm/fpm_atomic.h
@@ -12,7 +12,19 @@
#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;
|