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

Go to the source code of this file.

Macros

#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)
 

Typedefs

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

◆ ATOMIC_FLAG_INIT

#define ATOMIC_FLAG_INIT   0

Definition at line 30 of file stdatomic.h.

◆ ATOMIC_VAR_INIT

#define ATOMIC_VAR_INIT (   value)    (value)

Definition at line 32 of file stdatomic.h.

◆ atomic_init

#define atomic_init (   obj,
  value 
)
Value:
do { \
*(obj) = (value); \
} while(0)
double value
Definition: eval.c:98

Definition at line 34 of file stdatomic.h.

◆ kill_dependency

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

Definition at line 39 of file stdatomic.h.

◆ atomic_thread_fence

#define atomic_thread_fence (   order)    __sync_synchronize()

Definition at line 41 of file stdatomic.h.

◆ atomic_signal_fence

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

Definition at line 44 of file stdatomic.h.

◆ atomic_is_lock_free

#define atomic_is_lock_free (   obj)    0

Definition at line 47 of file stdatomic.h.

◆ atomic_store

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

Definition at line 86 of file stdatomic.h.

◆ atomic_store_explicit

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

Definition at line 92 of file stdatomic.h.

◆ atomic_load

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

Definition at line 95 of file stdatomic.h.

◆ atomic_load_explicit

#define atomic_load_explicit (   object,
  order 
)    atomic_load(object)

Definition at line 98 of file stdatomic.h.

◆ atomic_exchange

#define atomic_exchange (   object,
  desired 
)
Value:
({ \
__typeof__(object) _obj = (object); \
__typeof__(*object) _old; \
do \
_old = atomic_load(_obj); \
while (!__sync_bool_compare_and_swap(_obj, _old, (desired))); \
_old; \
})
#define atomic_load(object)
Definition: stdatomic.h:95

Definition at line 101 of file stdatomic.h.

◆ atomic_exchange_explicit

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

Definition at line 111 of file stdatomic.h.

◆ atomic_compare_exchange_strong

#define atomic_compare_exchange_strong (   object,
  expected,
  desired 
)
Value:
({ \
__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.

◆ atomic_compare_exchange_strong_explicit

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

Definition at line 122 of file stdatomic.h.

◆ atomic_compare_exchange_weak

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

Definition at line 125 of file stdatomic.h.

◆ atomic_compare_exchange_weak_explicit

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

Definition at line 128 of file stdatomic.h.

◆ atomic_fetch_add

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

◆ atomic_fetch_add_explicit

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

Definition at line 134 of file stdatomic.h.

◆ atomic_fetch_sub

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

◆ atomic_fetch_sub_explicit

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

Definition at line 140 of file stdatomic.h.

◆ atomic_fetch_or

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

Definition at line 143 of file stdatomic.h.

◆ atomic_fetch_or_explicit

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

Definition at line 146 of file stdatomic.h.

◆ atomic_fetch_xor

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

Definition at line 149 of file stdatomic.h.

◆ atomic_fetch_xor_explicit

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

Definition at line 152 of file stdatomic.h.

◆ atomic_fetch_and

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

Definition at line 155 of file stdatomic.h.

◆ atomic_fetch_and_explicit

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

Definition at line 158 of file stdatomic.h.

◆ atomic_flag_test_and_set

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

Definition at line 161 of file stdatomic.h.

◆ atomic_flag_test_and_set_explicit

#define atomic_flag_test_and_set_explicit (   object,
  order 
)    atomic_flag_test_and_set(object)

Definition at line 164 of file stdatomic.h.

◆ atomic_flag_clear

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

Definition at line 167 of file stdatomic.h.

◆ atomic_flag_clear_explicit

#define atomic_flag_clear_explicit (   object,
  order 
)    atomic_flag_clear(object)

Definition at line 170 of file stdatomic.h.

Typedef Documentation

◆ atomic_flag

typedef _Bool atomic_flag

Definition at line 49 of file stdatomic.h.

◆ atomic_bool

typedef _Bool atomic_bool

Definition at line 50 of file stdatomic.h.

◆ atomic_char

typedef char atomic_char

Definition at line 51 of file stdatomic.h.

◆ atomic_schar

typedef signed char atomic_schar

Definition at line 52 of file stdatomic.h.

◆ atomic_uchar

typedef unsigned char atomic_uchar

Definition at line 53 of file stdatomic.h.

◆ atomic_short

typedef short atomic_short

Definition at line 54 of file stdatomic.h.

◆ atomic_ushort

typedef unsigned short atomic_ushort

Definition at line 55 of file stdatomic.h.

◆ atomic_int

typedef int atomic_int

Definition at line 56 of file stdatomic.h.

◆ atomic_uint

typedef unsigned int atomic_uint

Definition at line 57 of file stdatomic.h.

◆ atomic_long

typedef long atomic_long

Definition at line 58 of file stdatomic.h.

◆ atomic_ulong

typedef unsigned long atomic_ulong

Definition at line 59 of file stdatomic.h.

◆ atomic_llong

typedef long long atomic_llong

Definition at line 60 of file stdatomic.h.

◆ atomic_ullong

typedef unsigned long long atomic_ullong

Definition at line 61 of file stdatomic.h.

◆ atomic_wchar_t

typedef wchar_t atomic_wchar_t

Definition at line 62 of file stdatomic.h.

◆ atomic_int_least8_t

typedef int_least8_t atomic_int_least8_t

Definition at line 63 of file stdatomic.h.

◆ atomic_uint_least8_t

typedef uint_least8_t atomic_uint_least8_t

Definition at line 64 of file stdatomic.h.

◆ atomic_int_least16_t

typedef int_least16_t atomic_int_least16_t

Definition at line 65 of file stdatomic.h.

◆ atomic_uint_least16_t

typedef uint_least16_t atomic_uint_least16_t

Definition at line 66 of file stdatomic.h.

◆ atomic_int_least32_t

typedef int_least32_t atomic_int_least32_t

Definition at line 67 of file stdatomic.h.

◆ atomic_uint_least32_t

typedef uint_least32_t atomic_uint_least32_t

Definition at line 68 of file stdatomic.h.

◆ atomic_int_least64_t

typedef int_least64_t atomic_int_least64_t

Definition at line 69 of file stdatomic.h.

◆ atomic_uint_least64_t

typedef uint_least64_t atomic_uint_least64_t

Definition at line 70 of file stdatomic.h.

◆ atomic_int_fast8_t

typedef int_fast8_t atomic_int_fast8_t

Definition at line 71 of file stdatomic.h.

◆ atomic_uint_fast8_t

typedef uint_fast8_t atomic_uint_fast8_t

Definition at line 72 of file stdatomic.h.

◆ atomic_int_fast16_t

typedef int_fast16_t atomic_int_fast16_t

Definition at line 73 of file stdatomic.h.

◆ atomic_uint_fast16_t

typedef uint_fast16_t atomic_uint_fast16_t

Definition at line 74 of file stdatomic.h.

◆ atomic_int_fast32_t

typedef int_fast32_t atomic_int_fast32_t

Definition at line 75 of file stdatomic.h.

◆ atomic_uint_fast32_t

typedef uint_fast32_t atomic_uint_fast32_t

Definition at line 76 of file stdatomic.h.

◆ atomic_int_fast64_t

typedef int_fast64_t atomic_int_fast64_t

Definition at line 77 of file stdatomic.h.

◆ atomic_uint_fast64_t

typedef uint_fast64_t atomic_uint_fast64_t

Definition at line 78 of file stdatomic.h.

◆ atomic_intptr_t

typedef intptr_t atomic_intptr_t

Definition at line 79 of file stdatomic.h.

◆ atomic_uintptr_t

typedef uintptr_t atomic_uintptr_t

Definition at line 80 of file stdatomic.h.

◆ atomic_size_t

typedef size_t atomic_size_t

Definition at line 81 of file stdatomic.h.

◆ atomic_ptrdiff_t

typedef ptrdiff_t atomic_ptrdiff_t

Definition at line 82 of file stdatomic.h.

◆ atomic_intmax_t

typedef intmax_t atomic_intmax_t

Definition at line 83 of file stdatomic.h.

◆ atomic_uintmax_t

typedef uintmax_t atomic_uintmax_t

Definition at line 84 of file stdatomic.h.