clang  3.9.0
Classes | Macros | Typedefs | Enumerations | Functions
stdatomic.h File Reference
#include <stddef.h>
#include <stdint.h>
Include dependency graph for stdatomic.h:

Go to the source code of this file.

Classes

struct  atomic_flag
 

Macros

#define ATOMIC_BOOL_LOCK_FREE   __GCC_ATOMIC_BOOL_LOCK_FREE
 
#define ATOMIC_CHAR_LOCK_FREE   __GCC_ATOMIC_CHAR_LOCK_FREE
 
#define ATOMIC_CHAR16_T_LOCK_FREE   __GCC_ATOMIC_CHAR16_T_LOCK_FREE
 
#define ATOMIC_CHAR32_T_LOCK_FREE   __GCC_ATOMIC_CHAR32_T_LOCK_FREE
 
#define ATOMIC_WCHAR_T_LOCK_FREE   __GCC_ATOMIC_WCHAR_T_LOCK_FREE
 
#define ATOMIC_SHORT_T_LOCK_FREE   __GCC_ATOMIC_SHORT_T_LOCK_FREE
 
#define ATOMIC_INT_T_LOCK_FREE   __GCC_ATOMIC_INT_T_LOCK_FREE
 
#define ATOMIC_LONG_T_LOCK_FREE   __GCC_ATOMIC_LONG_T_LOCK_FREE
 
#define ATOMIC_LLONG_T_LOCK_FREE   __GCC_ATOMIC_LLONG_T_LOCK_FREE
 
#define ATOMIC_POINTER_T_LOCK_FREE   __GCC_ATOMIC_POINTER_T_LOCK_FREE
 
#define ATOMIC_VAR_INIT(value)   (value)
 
#define atomic_init   __c11_atomic_init
 
#define kill_dependency(y)   (y)
 
#define atomic_thread_fence(order)   __c11_atomic_thread_fence(order)
 
#define atomic_signal_fence(order)   __c11_atomic_signal_fence(order)
 
#define atomic_is_lock_free(obj)   __c11_atomic_is_lock_free(sizeof(*(obj)))
 
#define atomic_store(object, desired)   __c11_atomic_store(object, desired, __ATOMIC_SEQ_CST)
 
#define atomic_store_explicit   __c11_atomic_store
 
#define atomic_load(object)   __c11_atomic_load(object, __ATOMIC_SEQ_CST)
 
#define atomic_load_explicit   __c11_atomic_load
 
#define atomic_exchange(object, desired)   __c11_atomic_exchange(object, desired, __ATOMIC_SEQ_CST)
 
#define atomic_exchange_explicit   __c11_atomic_exchange
 
#define atomic_compare_exchange_strong(object, expected, desired)   __c11_atomic_compare_exchange_strong(object, expected, desired, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
 
#define atomic_compare_exchange_strong_explicit   __c11_atomic_compare_exchange_strong
 
#define atomic_compare_exchange_weak(object, expected, desired)   __c11_atomic_compare_exchange_weak(object, expected, desired, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
 
#define atomic_compare_exchange_weak_explicit   __c11_atomic_compare_exchange_weak
 
#define atomic_fetch_add(object, operand)   __c11_atomic_fetch_add(object, operand, __ATOMIC_SEQ_CST)
 
#define atomic_fetch_add_explicit   __c11_atomic_fetch_add
 
#define atomic_fetch_sub(object, operand)   __c11_atomic_fetch_sub(object, operand, __ATOMIC_SEQ_CST)
 
#define atomic_fetch_sub_explicit   __c11_atomic_fetch_sub
 
#define atomic_fetch_or(object, operand)   __c11_atomic_fetch_or(object, operand, __ATOMIC_SEQ_CST)
 
#define atomic_fetch_or_explicit   __c11_atomic_fetch_or
 
#define atomic_fetch_xor(object, operand)   __c11_atomic_fetch_xor(object, operand, __ATOMIC_SEQ_CST)
 
#define atomic_fetch_xor_explicit   __c11_atomic_fetch_xor
 
#define atomic_fetch_and(object, operand)   __c11_atomic_fetch_and(object, operand, __ATOMIC_SEQ_CST)
 
#define atomic_fetch_and_explicit   __c11_atomic_fetch_and
 
#define ATOMIC_FLAG_INIT   { 0 }
 
#define atomic_flag_test_and_set(object)   __c11_atomic_exchange(&(object)->_Value, 1, __ATOMIC_SEQ_CST)
 
#define atomic_flag_test_and_set_explicit(object, order)   __c11_atomic_exchange(&(object)->_Value, 1, order)
 
#define atomic_flag_clear(object)   __c11_atomic_store(&(object)->_Value, 0, __ATOMIC_SEQ_CST)
 
#define atomic_flag_clear_explicit(object, order)   __c11_atomic_store(&(object)->_Value, 0, order)
 

Typedefs

typedef enum memory_order memory_order
 
typedef struct atomic_flag atomic_flag
 

Enumerations

enum  memory_order {
  memory_order_relaxed, memory_order_acquire, memory_order_release, memory_order_acq_rel,
  memory_order_seq_cst, memory_order_relaxed = __ATOMIC_RELAXED, memory_order_consume = __ATOMIC_CONSUME, memory_order_acquire = __ATOMIC_ACQUIRE,
  memory_order_release = __ATOMIC_RELEASE, memory_order_acq_rel = __ATOMIC_ACQ_REL, memory_order_seq_cst = __ATOMIC_SEQ_CST
}
 

Functions

void atomic_thread_fence (memory_order)
 
void atomic_signal_fence (memory_order)
 
typedef _Atomic (_Bool) atomic_bool
 
typedef _Atomic (char) atomic_char
 
typedef _Atomic (signed char) atomic_schar
 
typedef _Atomic (unsigned char) atomic_uchar
 
typedef _Atomic (short) atomic_short
 
typedef _Atomic (int) atomic_int
 
typedef _Atomic (long) atomic_long
 
typedef _Atomic (unsigned long long) atomic_ullong
 
typedef _Atomic (uint_least16_t) atomic_char16_t
 
typedef _Atomic (uint_least32_t) atomic_char32_t
 
typedef _Atomic (wchar_t) atomic_wchar_t
 
typedef _Atomic (int_least8_t) atomic_int_least8_t
 
typedef _Atomic (uint_least8_t) atomic_uint_least8_t
 
typedef _Atomic (int_least16_t) atomic_int_least16_t
 
typedef _Atomic (int_least32_t) atomic_int_least32_t
 
typedef _Atomic (int_least64_t) atomic_int_least64_t
 
typedef _Atomic (uint_least64_t) atomic_uint_least64_t
 
typedef _Atomic (int_fast8_t) atomic_int_fast8_t
 
typedef _Atomic (uint_fast8_t) atomic_uint_fast8_t
 
typedef _Atomic (int_fast16_t) atomic_int_fast16_t
 
typedef _Atomic (uint_fast16_t) atomic_uint_fast16_t
 
typedef _Atomic (int_fast32_t) atomic_int_fast32_t
 
typedef _Atomic (uint_fast32_t) atomic_uint_fast32_t
 
typedef _Atomic (int_fast64_t) atomic_int_fast64_t
 
typedef _Atomic (uint_fast64_t) atomic_uint_fast64_t
 
typedef _Atomic (intptr_t) atomic_intptr_t
 
typedef _Atomic (uintptr_t) atomic_uintptr_t
 
typedef _Atomic (size_t) atomic_size_t
 
typedef _Atomic (ptrdiff_t) atomic_ptrdiff_t
 
typedef _Atomic (intmax_t) atomic_intmax_t
 
typedef _Atomic (uintmax_t) atomic_uintmax_t
 
_Bool atomic_flag_test_and_set (volatile atomic_flag *)
 
_Bool atomic_flag_test_and_set_explicit (volatile atomic_flag *, memory_order)
 
void atomic_flag_clear (volatile atomic_flag *)
 
void atomic_flag_clear_explicit (volatile atomic_flag *, memory_order)
 

Macro Definition Documentation

#define ATOMIC_BOOL_LOCK_FREE   __GCC_ATOMIC_BOOL_LOCK_FREE

Definition at line 43 of file stdatomic.h.

#define ATOMIC_CHAR16_T_LOCK_FREE   __GCC_ATOMIC_CHAR16_T_LOCK_FREE

Definition at line 45 of file stdatomic.h.

#define ATOMIC_CHAR32_T_LOCK_FREE   __GCC_ATOMIC_CHAR32_T_LOCK_FREE

Definition at line 46 of file stdatomic.h.

#define ATOMIC_CHAR_LOCK_FREE   __GCC_ATOMIC_CHAR_LOCK_FREE

Definition at line 44 of file stdatomic.h.

#define atomic_compare_exchange_strong (   object,
  expected,
  desired 
)    __c11_atomic_compare_exchange_strong(object, expected, desired, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)

Definition at line 140 of file stdatomic.h.

#define atomic_compare_exchange_strong_explicit   __c11_atomic_compare_exchange_strong

Definition at line 141 of file stdatomic.h.

#define atomic_compare_exchange_weak (   object,
  expected,
  desired 
)    __c11_atomic_compare_exchange_weak(object, expected, desired, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)

Definition at line 143 of file stdatomic.h.

#define atomic_compare_exchange_weak_explicit   __c11_atomic_compare_exchange_weak

Definition at line 144 of file stdatomic.h.

#define atomic_exchange (   object,
  desired 
)    __c11_atomic_exchange(object, desired, __ATOMIC_SEQ_CST)

Definition at line 137 of file stdatomic.h.

#define atomic_exchange_explicit   __c11_atomic_exchange

Definition at line 138 of file stdatomic.h.

#define atomic_fetch_add (   object,
  operand 
)    __c11_atomic_fetch_add(object, operand, __ATOMIC_SEQ_CST)

Definition at line 146 of file stdatomic.h.

#define atomic_fetch_add_explicit   __c11_atomic_fetch_add

Definition at line 147 of file stdatomic.h.

#define atomic_fetch_and (   object,
  operand 
)    __c11_atomic_fetch_and(object, operand, __ATOMIC_SEQ_CST)

Definition at line 158 of file stdatomic.h.

#define atomic_fetch_and_explicit   __c11_atomic_fetch_and

Definition at line 159 of file stdatomic.h.

#define atomic_fetch_or (   object,
  operand 
)    __c11_atomic_fetch_or(object, operand, __ATOMIC_SEQ_CST)

Definition at line 152 of file stdatomic.h.

#define atomic_fetch_or_explicit   __c11_atomic_fetch_or

Definition at line 153 of file stdatomic.h.

#define atomic_fetch_sub (   object,
  operand 
)    __c11_atomic_fetch_sub(object, operand, __ATOMIC_SEQ_CST)

Definition at line 149 of file stdatomic.h.

#define atomic_fetch_sub_explicit   __c11_atomic_fetch_sub

Definition at line 150 of file stdatomic.h.

#define atomic_fetch_xor (   object,
  operand 
)    __c11_atomic_fetch_xor(object, operand, __ATOMIC_SEQ_CST)

Definition at line 155 of file stdatomic.h.

#define atomic_fetch_xor_explicit   __c11_atomic_fetch_xor

Definition at line 156 of file stdatomic.h.

#define atomic_flag_clear (   object)    __c11_atomic_store(&(object)->_Value, 0, __ATOMIC_SEQ_CST)

Definition at line 181 of file stdatomic.h.

#define atomic_flag_clear_explicit (   object,
  order 
)    __c11_atomic_store(&(object)->_Value, 0, order)

Definition at line 182 of file stdatomic.h.

#define ATOMIC_FLAG_INIT   { 0 }

Definition at line 165 of file stdatomic.h.

#define atomic_flag_test_and_set (   object)    __c11_atomic_exchange(&(object)->_Value, 1, __ATOMIC_SEQ_CST)

Definition at line 178 of file stdatomic.h.

#define atomic_flag_test_and_set_explicit (   object,
  order 
)    __c11_atomic_exchange(&(object)->_Value, 1, order)

Definition at line 179 of file stdatomic.h.

#define atomic_init   __c11_atomic_init

Definition at line 57 of file stdatomic.h.

#define ATOMIC_INT_T_LOCK_FREE   __GCC_ATOMIC_INT_T_LOCK_FREE

Definition at line 49 of file stdatomic.h.

#define atomic_is_lock_free (   obj)    __c11_atomic_is_lock_free(sizeof(*(obj)))

Definition at line 83 of file stdatomic.h.

#define ATOMIC_LLONG_T_LOCK_FREE   __GCC_ATOMIC_LLONG_T_LOCK_FREE

Definition at line 51 of file stdatomic.h.

#define atomic_load (   object)    __c11_atomic_load(object, __ATOMIC_SEQ_CST)

Definition at line 134 of file stdatomic.h.

#define atomic_load_explicit   __c11_atomic_load

Definition at line 135 of file stdatomic.h.

#define ATOMIC_LONG_T_LOCK_FREE   __GCC_ATOMIC_LONG_T_LOCK_FREE

Definition at line 50 of file stdatomic.h.

#define ATOMIC_POINTER_T_LOCK_FREE   __GCC_ATOMIC_POINTER_T_LOCK_FREE

Definition at line 52 of file stdatomic.h.

#define ATOMIC_SHORT_T_LOCK_FREE   __GCC_ATOMIC_SHORT_T_LOCK_FREE

Definition at line 48 of file stdatomic.h.

#define atomic_signal_fence (   order)    __c11_atomic_signal_fence(order)

Definition at line 79 of file stdatomic.h.

#define atomic_store (   object,
  desired 
)    __c11_atomic_store(object, desired, __ATOMIC_SEQ_CST)

Definition at line 131 of file stdatomic.h.

#define atomic_store_explicit   __c11_atomic_store

Definition at line 132 of file stdatomic.h.

#define atomic_thread_fence (   order)    __c11_atomic_thread_fence(order)

Definition at line 78 of file stdatomic.h.

#define ATOMIC_VAR_INIT (   value)    (value)

Definition at line 56 of file stdatomic.h.

#define ATOMIC_WCHAR_T_LOCK_FREE   __GCC_ATOMIC_WCHAR_T_LOCK_FREE

Definition at line 47 of file stdatomic.h.

#define kill_dependency (   y)    (y)

Definition at line 70 of file stdatomic.h.

Typedef Documentation

typedef struct atomic_flag atomic_flag
typedef enum memory_order memory_order

Enumeration Type Documentation

Enumerator
memory_order_relaxed 
memory_order_acquire 
memory_order_release 
memory_order_acq_rel 
memory_order_seq_cst 
memory_order_relaxed 
memory_order_consume 
memory_order_acquire 
memory_order_release 
memory_order_acq_rel 
memory_order_seq_cst 

Definition at line 61 of file stdatomic.h.

Function Documentation

typedef _Atomic ( _Bool  )
typedef _Atomic ( char  )
typedef _Atomic ( signed  char)
typedef _Atomic ( unsigned  char)
typedef _Atomic ( short  )
typedef _Atomic ( int  )
typedef _Atomic ( long  )
typedef _Atomic ( unsigned long  long)
typedef _Atomic ( uint_least16_t  )
typedef _Atomic ( uint_least32_t  )
typedef _Atomic ( wchar_t  )
typedef _Atomic ( int_least8_t  )
typedef _Atomic ( uint_least8_t  )
typedef _Atomic ( int_least16_t  )
typedef _Atomic ( int_least32_t  )
typedef _Atomic ( int_least64_t  )
typedef _Atomic ( uint_least64_t  )
typedef _Atomic ( int_fast8_t  )
typedef _Atomic ( uint_fast8_t  )
typedef _Atomic ( int_fast16_t  )
typedef _Atomic ( uint_fast16_t  )
typedef _Atomic ( int_fast32_t  )
typedef _Atomic ( uint_fast32_t  )
typedef _Atomic ( int_fast64_t  )
typedef _Atomic ( uint_fast64_t  )
typedef _Atomic ( intptr_t  )
typedef _Atomic ( uintptr_t  )
typedef _Atomic ( size_t  )
typedef _Atomic ( ptrdiff_t  )
typedef _Atomic ( intmax_t  )
typedef _Atomic ( uintmax_t  )
void atomic_flag_clear ( volatile atomic_flag )
void atomic_flag_clear_explicit ( volatile atomic_flag ,
memory_order   
)
_Bool atomic_flag_test_and_set ( volatile atomic_flag )
_Bool atomic_flag_test_and_set_explicit ( volatile atomic_flag ,
memory_order   
)
void atomic_signal_fence ( memory_order  )
void atomic_thread_fence ( memory_order  )