diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-04-20 10:44:52 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-04-20 12:33:37 +0900 |
commit | 20773a109029ba4464d7749d38a311f880a73293 (patch) | |
tree | f307810115b2633233c12608d29f86fc73453b2c /ruby_atomic.h | |
parent | e92f3e12169e94ba8b230322de938ce540899345 (diff) |
Bail out if no atomic operation found
As atomic operations are mandatory now, not-working phony fallback
definitions are not only useless but confusing and harmful.
Diffstat (limited to 'ruby_atomic.h')
-rw-r--r-- | ruby_atomic.h | 25 |
1 files changed, 1 insertions, 24 deletions
diff --git a/ruby_atomic.h b/ruby_atomic.h index d4d56da424..d2338677ea 100644 --- a/ruby_atomic.h +++ b/ruby_atomic.h @@ -121,30 +121,7 @@ typedef unsigned int rb_atomic_t; # endif #else -typedef int rb_atomic_t; -#define NEED_RUBY_ATOMIC_OPS -extern rb_atomic_t ruby_atomic_exchange(rb_atomic_t *ptr, rb_atomic_t val); -extern rb_atomic_t ruby_atomic_compare_and_swap(rb_atomic_t *ptr, - rb_atomic_t cmp, - rb_atomic_t newval); - -# define ATOMIC_SET(var, val) (void)((var) = (val)) -# 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)) -# define ATOMIC_CAS(var, oldval, newval) ruby_atomic_compare_and_swap(&(var), (oldval), (newval)) - -# define ATOMIC_SIZE_ADD(var, val) (void)((var) += (val)) -# define ATOMIC_SIZE_SUB(var, val) (void)((var) -= (val)) -# define ATOMIC_SIZE_EXCHANGE(var, val) ruby_atomic_size_exchange(&(var), (val)) -static inline size_t -ruby_atomic_size_exchange(size_t *ptr, size_t val) -{ - size_t old = *ptr; - *ptr = val; - return old; -} +# error No atomic operation found #endif #ifndef ATOMIC_SIZE_INC |