summaryrefslogtreecommitdiff
path: root/atomic.h
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-10-13 20:58:08 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-10-13 20:58:08 +0000
commitc96c193e1d8d6ec45749c8ab49e5be99771fab7c (patch)
tree588c57f09301e742336120b37ae9c3a70d835685 /atomic.h
parent5558de40b6344f5bdba783b170a54df80f4b4e6d (diff)
* atomic.h (ATOMIC_INC, ATOMIC_DEC): return old values.
[ruby-dev:44596] [Bug #5439] * signal.c (ruby_atomic_exchange): no needs to define on the platforms where atomic.h is available. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33464 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'atomic.h')
-rw-r--r--atomic.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/atomic.h b/atomic.h
index d131677aa6..33f731927d 100644
--- a/atomic.h
+++ b/atomic.h
@@ -54,11 +54,12 @@ typedef unsigned int rb_atomic_t;
#else
typedef int rb_atomic_t;
+#define NEED_RUBY_ATOMIC_EXCHANGE
extern rb_atomic_t ruby_atomic_exchange(rb_atomic_t *ptr, rb_atomic_t val);
# define ATOMIC_SET(var, val) (void)((var) = (val))
-# define ATOMIC_INC(var) (++(var))
-# define ATOMIC_DEC(var) (--(var))
+# define ATOMIC_INC(var) ((var)++)
+# define ATOMIC_DEC(var) ((var)--)
# define ATOMIC_OR(var, val) ((var) |= (val))
# define ATOMIC_EXCHANGE(var, val) ruby_atomic_exchange(&(var), (val))
#endif