Macros | Typedefs
stdatomic.h File Reference
#include <stddef.h>
#include <stdint.h>

Go to the source code of this file.


#define ATOMIC_FLAG_INIT   0
#define ATOMIC_VAR_INIT(value)   (value)
#define atomic_init(obj, value)
#define kill_dependency(y)   ((void)0)
#define atomic_thread_fence(order)   __sync_synchronize()
#define atomic_signal_fence(order)   ((void)0)
#define atomic_is_lock_free(obj)   0
#define atomic_store(object, desired)
#define atomic_store_explicit(object, desired, order)   atomic_store(object, desired)
#define atomic_load(object)   (__sync_synchronize(), *(object))
#define atomic_load_explicit(object, order)   atomic_load(object)
#define atomic_exchange(object, desired)
#define atomic_exchange_explicit(object, desired, order)   atomic_exchange(object, desired)
#define atomic_compare_exchange_strong(object, expected, desired)
#define atomic_compare_exchange_strong_explicit(object, expected, desired, success, failure)   atomic_compare_exchange_strong(object, expected, desired)
#define atomic_compare_exchange_weak(object, expected, desired)   atomic_compare_exchange_strong(object, expected, desired)
#define atomic_compare_exchange_weak_explicit(object, expected, desired, success, failure)   atomic_compare_exchange_weak(object, expected, desired)
#define atomic_fetch_add(object, operand)   __sync_fetch_and_add(object, operand)
#define atomic_fetch_add_explicit(object, operand, order)   atomic_fetch_add(object, operand)
#define atomic_fetch_sub(object, operand)   __sync_fetch_and_sub(object, operand)
#define atomic_fetch_sub_explicit(object, operand, order)   atomic_fetch_sub(object, operand)
#define atomic_fetch_or(object, operand)   __sync_fetch_and_or(object, operand)
#define atomic_fetch_or_explicit(object, operand, order)   atomic_fetch_or(object, operand)
#define atomic_fetch_xor(object, operand)   __sync_fetch_and_xor(object, operand)
#define atomic_fetch_xor_explicit(object, operand, order)   atomic_fetch_xor(object, operand)
#define atomic_fetch_and(object, operand)   __sync_fetch_and_and(object, operand)
#define atomic_fetch_and_explicit(object, operand, order)   atomic_fetch_and(object, operand)
#define atomic_flag_test_and_set(object)   atomic_exchange(object, 1)
#define atomic_flag_test_and_set_explicit(object, order)   atomic_flag_test_and_set(object)
#define atomic_flag_clear(object)   atomic_store(object, 0)
#define atomic_flag_clear_explicit(object, order)   atomic_flag_clear(object)


typedef _Bool atomic_flag
typedef _Bool atomic_bool
typedef char atomic_char
typedef signed char atomic_schar
typedef unsigned char atomic_uchar
typedef short atomic_short
typedef unsigned short atomic_ushort
typedef int atomic_int
typedef unsigned int atomic_uint
typedef long atomic_long
typedef unsigned long atomic_ulong
typedef long long atomic_llong
typedef unsigned long long atomic_ullong
typedef wchar_t atomic_wchar_t
typedef int_least8_t atomic_int_least8_t
typedef uint_least8_t atomic_uint_least8_t
typedef int_least16_t atomic_int_least16_t
typedef uint_least16_t atomic_uint_least16_t
typedef int_least32_t atomic_int_least32_t
typedef uint_least32_t atomic_uint_least32_t
typedef int_least64_t atomic_int_least64_t
typedef uint_least64_t atomic_uint_least64_t
typedef int_fast8_t atomic_int_fast8_t
typedef uint_fast8_t atomic_uint_fast8_t
typedef int_fast16_t atomic_int_fast16_t
typedef uint_fast16_t atomic_uint_fast16_t
typedef int_fast32_t atomic_int_fast32_t
typedef uint_fast32_t atomic_uint_fast32_t
typedef int_fast64_t atomic_int_fast64_t
typedef uint_fast64_t atomic_uint_fast64_t
typedef intptr_t atomic_intptr_t
typedef uintptr_t atomic_uintptr_t
typedef size_t atomic_size_t
typedef ptrdiff_t atomic_ptrdiff_t
typedef intmax_t atomic_intmax_t
typedef uintmax_t atomic_uintmax_t

Macro Definition Documentation

#define ATOMIC_FLAG_INIT   0

Definition at line 30 of file stdatomic.h.

#define ATOMIC_VAR_INIT (   value)    (value)

Definition at line 32 of file stdatomic.h.

#define atomic_init (   obj,
do { \
*(obj) = (value); \
} while(0)
GLsizei GLboolean const GLfloat * value
Definition: opengl_enc.c:108

Definition at line 34 of file stdatomic.h.

#define kill_dependency (   y)    ((void)0)

Definition at line 39 of file stdatomic.h.

#define atomic_thread_fence (   order)    __sync_synchronize()

Definition at line 41 of file stdatomic.h.

#define atomic_signal_fence (   order)    ((void)0)

Definition at line 44 of file stdatomic.h.

#define atomic_is_lock_free (   obj)    0

Definition at line 47 of file stdatomic.h.

#define atomic_store (   object,
do { \
*(object) = (desired); \
__sync_synchronize(); \
} while (0)

Definition at line 86 of file stdatomic.h.

#define atomic_store_explicit (   object,
)    atomic_store(object, desired)

Definition at line 92 of file stdatomic.h.

#define atomic_load (   object)    (__sync_synchronize(), *(object))

Definition at line 95 of file stdatomic.h.

#define atomic_load_explicit (   object,
)    atomic_load(object)

Definition at line 98 of file stdatomic.h.

#define atomic_exchange (   object,
({ \
__typeof__(object) _obj = (object); \
__typeof__(*object) _old; \
do \
_old = atomic_load(_obj); \
while (!__sync_bool_compare_and_swap(_obj, _old, (desired))); \
_old; \
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default minimum maximum flags name is the option keep it simple and lowercase description are in without and describe what they do
#define atomic_load(object)
Definition: stdatomic.h:95

Definition at line 101 of file stdatomic.h.

#define atomic_exchange_explicit (   object,
)    atomic_exchange(object, desired)

Definition at line 111 of file stdatomic.h.

#define atomic_compare_exchange_strong (   object,
({ \
__typeof__(object) _exp = (expected); \
__typeof__(*object) _old = *_exp; \
*_exp = __sync_val_compare_and_swap((object), _old, (desired)); \
*_exp == _old; \

Definition at line 114 of file stdatomic.h.

#define atomic_compare_exchange_strong_explicit (   object,
)    atomic_compare_exchange_strong(object, expected, desired)

Definition at line 122 of file stdatomic.h.

#define atomic_compare_exchange_weak (   object,
)    atomic_compare_exchange_strong(object, expected, desired)

Definition at line 125 of file stdatomic.h.

#define atomic_compare_exchange_weak_explicit (   object,
)    atomic_compare_exchange_weak(object, expected, desired)

Definition at line 128 of file stdatomic.h.

#define atomic_fetch_add (   object,
)    __sync_fetch_and_add(object, operand)
#define atomic_fetch_add_explicit (   object,
)    atomic_fetch_add(object, operand)

Definition at line 134 of file stdatomic.h.

#define atomic_fetch_sub (   object,
)    __sync_fetch_and_sub(object, operand)
#define atomic_fetch_sub_explicit (   object,
)    atomic_fetch_sub(object, operand)

Definition at line 140 of file stdatomic.h.

#define atomic_fetch_or (   object,
)    __sync_fetch_and_or(object, operand)

Definition at line 143 of file stdatomic.h.

#define atomic_fetch_or_explicit (   object,
)    atomic_fetch_or(object, operand)

Definition at line 146 of file stdatomic.h.

#define atomic_fetch_xor (   object,
)    __sync_fetch_and_xor(object, operand)

Definition at line 149 of file stdatomic.h.

#define atomic_fetch_xor_explicit (   object,
)    atomic_fetch_xor(object, operand)

Definition at line 152 of file stdatomic.h.

#define atomic_fetch_and (   object,
)    __sync_fetch_and_and(object, operand)

Definition at line 155 of file stdatomic.h.

#define atomic_fetch_and_explicit (   object,
)    atomic_fetch_and(object, operand)

Definition at line 158 of file stdatomic.h.

#define atomic_flag_test_and_set (   object)    atomic_exchange(object, 1)

Definition at line 161 of file stdatomic.h.

#define atomic_flag_test_and_set_explicit (   object,
)    atomic_flag_test_and_set(object)

Definition at line 164 of file stdatomic.h.

#define atomic_flag_clear (   object)    atomic_store(object, 0)

Definition at line 167 of file stdatomic.h.

#define atomic_flag_clear_explicit (   object,
)    atomic_flag_clear(object)

Definition at line 170 of file stdatomic.h.

Typedef Documentation

typedef _Bool atomic_flag

Definition at line 49 of file stdatomic.h.

typedef _Bool atomic_bool

Definition at line 50 of file stdatomic.h.

typedef char atomic_char

Definition at line 51 of file stdatomic.h.

typedef signed char atomic_schar

Definition at line 52 of file stdatomic.h.

typedef unsigned char atomic_uchar

Definition at line 53 of file stdatomic.h.

Definition at line 54 of file stdatomic.h.

typedef unsigned short atomic_ushort

Definition at line 55 of file stdatomic.h.

typedef int atomic_int

Definition at line 56 of file stdatomic.h.

typedef unsigned int atomic_uint

Definition at line 57 of file stdatomic.h.

typedef long atomic_long

Definition at line 58 of file stdatomic.h.

typedef unsigned long atomic_ulong

Definition at line 59 of file stdatomic.h.

typedef long long atomic_llong

Definition at line 60 of file stdatomic.h.

typedef unsigned long long atomic_ullong

Definition at line 61 of file stdatomic.h.

typedef wchar_t atomic_wchar_t

Definition at line 62 of file stdatomic.h.

typedef int_least8_t atomic_int_least8_t

Definition at line 63 of file stdatomic.h.

typedef uint_least8_t atomic_uint_least8_t

Definition at line 64 of file stdatomic.h.

typedef int_least16_t atomic_int_least16_t

Definition at line 65 of file stdatomic.h.

typedef uint_least16_t atomic_uint_least16_t

Definition at line 66 of file stdatomic.h.

typedef int_least32_t atomic_int_least32_t

Definition at line 67 of file stdatomic.h.

typedef uint_least32_t atomic_uint_least32_t

Definition at line 68 of file stdatomic.h.

typedef int_least64_t atomic_int_least64_t

Definition at line 69 of file stdatomic.h.

typedef uint_least64_t atomic_uint_least64_t

Definition at line 70 of file stdatomic.h.

typedef int_fast8_t atomic_int_fast8_t

Definition at line 71 of file stdatomic.h.

typedef uint_fast8_t atomic_uint_fast8_t

Definition at line 72 of file stdatomic.h.

typedef int_fast16_t atomic_int_fast16_t

Definition at line 73 of file stdatomic.h.

typedef uint_fast16_t atomic_uint_fast16_t

Definition at line 74 of file stdatomic.h.

typedef int_fast32_t atomic_int_fast32_t

Definition at line 75 of file stdatomic.h.

typedef uint_fast32_t atomic_uint_fast32_t

Definition at line 76 of file stdatomic.h.

typedef int_fast64_t atomic_int_fast64_t

Definition at line 77 of file stdatomic.h.

typedef uint_fast64_t atomic_uint_fast64_t

Definition at line 78 of file stdatomic.h.

typedef intptr_t atomic_intptr_t

Definition at line 79 of file stdatomic.h.

typedef uintptr_t atomic_uintptr_t

Definition at line 80 of file stdatomic.h.

typedef size_t atomic_size_t

Definition at line 81 of file stdatomic.h.

typedef ptrdiff_t atomic_ptrdiff_t

Definition at line 82 of file stdatomic.h.

typedef intmax_t atomic_intmax_t

Definition at line 83 of file stdatomic.h.

typedef uintmax_t atomic_uintmax_t

Definition at line 84 of file stdatomic.h.