Deal with atomic stats variables on 32-bit machines.
[m6w6/libmemcached] / clients / ms_atomic.h
index ca117df834a3f6a1bf0d8681138e0513e238cced..c4f9a9475c31906e5fd4da9b576292d05bf6b827 100644 (file)
 #if defined(__SUNPRO_C)
 # define _KERNEL
 # include <atomic.h>
+# if defined(_INT64_TYPE)
+#  define  atomic_add_size(X, Y) atomic_add_64((X), (Y))
+#  define  atomic_add_size_nv(X, Y) atomic_add_64((X), (Y))
+#  define  atomic_dec_size(X, Y) atomic_add_64((X), (Y))
+#  define  atomic_dec_size_nv(X, Y) atomic_add_64((X), (Y))
+# else
+#  define  atomic_add_size(X, Y) atomic_add_32((X), (Y))
+#  define  atomic_add_size_nv(X, Y) atomic_add_32((X), (Y))
+#  define  atomic_dec_size(X, Y) atomic_add_32((X), (Y))
+#  define  atomic_dec_size_nv(X, Y) atomic_add_32((X), (Y))
+# endif
 # undef _KERNEL
 #else
 # define atomic_add_8(X, Y)  __sync_fetch_and_add((X), (Y))
 # define atomic_add_16(X, Y) __sync_fetch_and_add((X), (Y))
 # define atomic_add_32(X, Y) __sync_fetch_and_add((X), (Y))
-# define atomic_add_64(X, Y) __sync_fetch_and_add((X), (Y))
+# define atomic_add_size(X, Y) __sync_fetch_and_add((X), (Y))
 # define atomic_dec_8(X)  __sync_fetch_and_sub((X), 1)
 # define atomic_dec_16(X) __sync_fetch_and_sub((X), 1)
 # define atomic_dec_32(X) __sync_fetch_and_sub((X), 1)
-# define atomic_dec_64(X) __sync_fetch_and_sub((X), 1)
+# define atomic_dec_size(X) __sync_fetch_and_sub((X), 1)
 /* The same as above, but these return the new value instead of void */
 # define atomic_add_8_nv(X, Y)  __sync_fetch_and_add((X), (Y))
 # define atomic_add_16_nv(X, Y) __sync_fetch_and_add((X), (Y))
 # define atomic_add_32_nv(X, Y) __sync_fetch_and_add((X), (Y))
-# define atomic_add_64_nv(X, Y) __sync_fetch_and_add((X), (Y))
+# define atomic_add_size_nv(X, Y) __sync_fetch_and_add((X), (Y))
 # define atomic_dec_8_nv(X)  __sync_fetch_and_sub((X), 1)
 # define atomic_dec_16_nv(X) __sync_fetch_and_sub((X), 1)
 # define atomic_dec_32_nv(X) __sync_fetch_and_sub((X), 1)
-# define atomic_dec_64_nv(X) __sync_fetch_and_sub((X), 1)
+# define atomic_dec_size_nv(X) __sync_fetch_and_sub((X), 1)
 #endif /* defined(__SUNPRO_C) */
 
 #endif /* CLIENTS_MS_ATOMIC_H */