ruby_atomic.h File Reference

Go to the source code of this file.

Defines

#define NEED_RUBY_ATOMIC_EXCHANGE
#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_INC(var)   ((var)++)
#define ATOMIC_SIZE_DEC(var)   ((var)--)
#define ATOMIC_SIZE_EXCHANGE(var, val)   atomic_size_exchange(&(var), (val))
#define ATOMIC_SIZE_CAS(var, oldval, val)   ATOMIC_CAS(var, oldval, val)
#define ATOMIC_PTR_EXCHANGE(var, val)   (void *)ATOMIC_SIZE_EXCHANGE(*(size_t *)&(var), (size_t)(val))
#define ATOMIC_PTR_CAS(var, oldval, val)   (void *)ATOMIC_SIZE_CAS(*(size_t *)&(var), (size_t)(oldval), (size_t)(val))

Typedefs

typedef int rb_atomic_t

Functions

rb_atomic_t ruby_atomic_exchange (rb_atomic_t *ptr, rb_atomic_t val)
rb_atomic_t ruby_atomic_compare_and_swap (rb_atomic_t *ptr, rb_atomic_t cmp, rb_atomic_t newval)
static size_t atomic_size_exchange (size_t *ptr, size_t val)

Define Documentation

#define ATOMIC_CAS ( var,
oldval,
newval   )     ruby_atomic_compare_and_swap(&(var), (oldval), (newval))

Definition at line 144 of file ruby_atomic.h.

#define ATOMIC_DEC ( var   )     ((var)--)

Definition at line 141 of file ruby_atomic.h.

Referenced by rb_get_next_signal().

#define ATOMIC_EXCHANGE ( var,
val   )     ruby_atomic_exchange(&(var), (val))
#define ATOMIC_INC ( var   )     ((var)++)

Definition at line 140 of file ruby_atomic.h.

Referenced by sighandler().

#define ATOMIC_OR ( var,
val   )     ((var) |= (val))

Definition at line 142 of file ruby_atomic.h.

#define ATOMIC_PTR_CAS ( var,
oldval,
val   )     (void *)ATOMIC_SIZE_CAS(*(size_t *)&(var), (size_t)(oldval), (size_t)(val))

Definition at line 171 of file ruby_atomic.h.

Referenced by iseq_load().

#define ATOMIC_PTR_EXCHANGE ( var,
val   )     (void *)ATOMIC_SIZE_EXCHANGE(*(size_t *)&(var), (size_t)(val))

Definition at line 166 of file ruby_atomic.h.

Referenced by finalize_deferred().

#define ATOMIC_SET ( var,
val   )     (void)((var) = (val))

Definition at line 139 of file ruby_atomic.h.

Referenced by rb_gc_finalize_deferred(), and rb_objspace_call_finalizer().

#define ATOMIC_SIZE_ADD ( var,
val   )     (void)((var) += (val))

Definition at line 146 of file ruby_atomic.h.

#define ATOMIC_SIZE_CAS ( var,
oldval,
val   )     ATOMIC_CAS(var, oldval, val)

Definition at line 161 of file ruby_atomic.h.

#define ATOMIC_SIZE_DEC ( var   )     ((var)--)

Definition at line 149 of file ruby_atomic.h.

#define ATOMIC_SIZE_EXCHANGE ( var,
val   )     atomic_size_exchange(&(var), (val))

Definition at line 150 of file ruby_atomic.h.

#define ATOMIC_SIZE_INC ( var   )     ((var)++)

Definition at line 148 of file ruby_atomic.h.

#define ATOMIC_SIZE_SUB ( var,
val   )     (void)((var) -= (val))

Definition at line 147 of file ruby_atomic.h.

#define NEED_RUBY_ATOMIC_EXCHANGE

Definition at line 133 of file ruby_atomic.h.


Typedef Documentation

typedef int rb_atomic_t

Definition at line 132 of file ruby_atomic.h.


Function Documentation

static size_t atomic_size_exchange ( size_t *  ptr,
size_t  val 
) [inline, static]

Definition at line 152 of file ruby_atomic.h.

rb_atomic_t ruby_atomic_compare_and_swap ( rb_atomic_t ptr,
rb_atomic_t  cmp,
rb_atomic_t  newval 
)

Definition at line 34 of file signal.c.

rb_atomic_t ruby_atomic_exchange ( rb_atomic_t ptr,
rb_atomic_t  val 
)

Definition at line 26 of file signal.c.


Generated on 27 Nov 2014 for Ruby by  doxygen 1.6.1