diff options
-rw-r--r-- | include/ruby/atomic.h | 43 |
1 files changed, 43 insertions, 0 deletions
@@ -316,6 +316,19 @@ typedef unsigned int rb_atomic_t; RBIMPL_CAST(rbimpl_atomic_ptr_cas((void **)&(var), (void *)(oldval), (void *)(newval))) /** * Identical to #RUBY_ATOMIC_EXCHANGE, except it expects its arguments are * ::VALUE. There are cases where ::rb_atomic_t is 32bit while ::VALUE is * 64bit. This should be used for pointer related operations to support such @@ -733,6 +746,23 @@ rbimpl_atomic_size_exchange(volatile size_t *ptr, size_t val) RBIMPL_ATTR_ARTIFICIAL() RBIMPL_ATTR_NOALIAS() RBIMPL_ATTR_NONNULL((1)) static inline void * rbimpl_atomic_ptr_exchange(void *volatile *ptr, const void *val) { @@ -775,6 +805,19 @@ rbimpl_atomic_value_exchange(volatile VALUE *ptr, VALUE val) RBIMPL_ATTR_ARTIFICIAL() RBIMPL_ATTR_NOALIAS() RBIMPL_ATTR_NONNULL((1)) static inline rb_atomic_t rbimpl_atomic_load(volatile rb_atomic_t *ptr) { |