[ruby/etc] Added fallback definition of RUBY_ATOMIC_EXCHANGE
https://github.com/ruby/etc/commit/0c5900bd21
This commit is contained in:
parent
f6e2c41db3
commit
d2aaf865e3
|
@ -68,6 +68,15 @@ void rb_deprecate_constant(VALUE mod, const char *name);
|
||||||
typedef int rb_atomic_t;
|
typedef int rb_atomic_t;
|
||||||
# define RUBY_ATOMIC_CAS(var, oldval, newval) \
|
# define RUBY_ATOMIC_CAS(var, oldval, newval) \
|
||||||
((var) == (oldval) ? ((var) = (newval), (oldval)) : (var))
|
((var) == (oldval) ? ((var) = (newval), (oldval)) : (var))
|
||||||
|
# define RUBY_ATOMIC_EXCHANGE(var, newval) \
|
||||||
|
atomic_exchange(&var, newval)
|
||||||
|
static inline rb_atomic_t
|
||||||
|
atomic_exchange(volatile rb_atomic_t *var, rb_atomic_t newval)
|
||||||
|
{
|
||||||
|
rb_atomic_t oldval = *var;
|
||||||
|
*var = newval;
|
||||||
|
return oldval;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* call-seq:
|
/* call-seq:
|
||||||
|
|
Loading…
Reference in New Issue