FFmpeg
Macros | Typedefs | Functions
stdatomic.h File Reference
#include <atomic.h>
#include <mbarrier.h>
#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)   __machine_rw_barrier();
 
#define atomic_signal_fence(order)   ((void)0)
 
#define atomic_is_lock_free(obj)   0
 
#define atomic_store_explicit(object, desired, order)   atomic_store(object, desired)
 
#define atomic_load_explicit(object, order)   atomic_load(object)
 
#define atomic_exchange(object, desired)   atomic_swap_ptr(object, desired)
 
#define atomic_exchange_explicit(object, desired, order)   atomic_exchange(object, 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_sub(object, operand)   atomic_fetch_add(object, -(operand))
 
#define atomic_fetch_add_explicit(object, operand, order)   atomic_fetch_add(object, operand)
 
#define atomic_fetch_sub_explicit(object, operand, order)   atomic_fetch_sub(object, operand)
 
#define atomic_fetch_or_explicit(object, operand, order)   atomic_fetch_or(object, operand)
 
#define atomic_fetch_xor_explicit(object, operand, order)   atomic_fetch_xor(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 intptr_t atomic_flag
 
typedef intptr_t atomic_bool
 
typedef intptr_t atomic_char
 
typedef intptr_t atomic_schar
 
typedef intptr_t atomic_uchar
 
typedef intptr_t atomic_short
 
typedef intptr_t atomic_ushort
 
typedef intptr_t atomic_int
 
typedef intptr_t atomic_uint
 
typedef intptr_t atomic_long
 
typedef intptr_t atomic_ulong
 
typedef intptr_t atomic_llong
 
typedef intptr_t atomic_ullong
 
typedef intptr_t atomic_wchar_t
 
typedef intptr_t atomic_int_least8_t
 
typedef intptr_t atomic_uint_least8_t
 
typedef intptr_t atomic_int_least16_t
 
typedef intptr_t atomic_uint_least16_t
 
typedef intptr_t atomic_int_least32_t
 
typedef intptr_t atomic_uint_least32_t
 
typedef intptr_t atomic_int_least64_t
 
typedef intptr_t atomic_uint_least64_t
 
typedef intptr_t atomic_int_fast8_t
 
typedef intptr_t atomic_uint_fast8_t
 
typedef intptr_t atomic_int_fast16_t
 
typedef intptr_t atomic_uint_fast16_t
 
typedef intptr_t atomic_int_fast32_t
 
typedef intptr_t atomic_uint_fast32_t
 
typedef intptr_t atomic_int_fast64_t
 
typedef intptr_t atomic_uint_fast64_t
 
typedef intptr_t atomic_intptr_t
 
typedef intptr_t atomic_uintptr_t
 
typedef intptr_t atomic_size_t
 
typedef intptr_t atomic_ptrdiff_t
 
typedef intptr_t atomic_intmax_t
 
typedef intptr_t atomic_uintmax_t
 

Functions

static void atomic_store (intptr_t *object, intptr_t desired)
 
static intptr_t atomic_load (intptr_t *object)
 
static int atomic_compare_exchange_strong (intptr_t *object, intptr_t *expected, intptr_t desired)
 
static intptr_t atomic_fetch_add (intptr_t *object, intptr_t operand)
 
static intptr_t atomic_fetch_or (intptr_t *object, intptr_t operand)
 
static intptr_t atomic_fetch_xor (intptr_t *object, intptr_t operand)
 
static intptr_t atomic_fetch_and (intptr_t *object, intptr_t operand)
 

Macro Definition Documentation

◆ ATOMIC_FLAG_INIT

#define ATOMIC_FLAG_INIT   0

Definition at line 27 of file stdatomic.h.

◆ ATOMIC_VAR_INIT

#define ATOMIC_VAR_INIT (   value)    (value)

Definition at line 29 of file stdatomic.h.

◆ atomic_init

#define atomic_init (   obj,
  value 
)
Value:
do { \
*(obj) = (value); \
} while(0)

Definition at line 31 of file stdatomic.h.

◆ kill_dependency

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

Definition at line 36 of file stdatomic.h.

◆ atomic_thread_fence

#define atomic_thread_fence (   order)    __machine_rw_barrier();

Definition at line 38 of file stdatomic.h.

◆ atomic_signal_fence

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

Definition at line 41 of file stdatomic.h.

◆ atomic_is_lock_free

#define atomic_is_lock_free (   obj)    0

Definition at line 44 of file stdatomic.h.

◆ atomic_store_explicit

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

Definition at line 89 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 
)    atomic_swap_ptr(object, desired)

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 104 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 115 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 118 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 121 of file stdatomic.h.

◆ atomic_fetch_sub

#define atomic_fetch_sub (   object,
  operand 
)    atomic_fetch_add(object, -(operand))

Definition at line 129 of file stdatomic.h.

◆ atomic_fetch_add_explicit

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

Definition at line 159 of file stdatomic.h.

◆ atomic_fetch_sub_explicit

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

Definition at line 162 of file stdatomic.h.

◆ atomic_fetch_or_explicit

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

Definition at line 165 of file stdatomic.h.

◆ atomic_fetch_xor_explicit

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

Definition at line 168 of file stdatomic.h.

◆ atomic_fetch_and_explicit

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

Definition at line 171 of file stdatomic.h.

◆ atomic_flag_test_and_set

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

Definition at line 174 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 177 of file stdatomic.h.

◆ atomic_flag_clear

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

Definition at line 180 of file stdatomic.h.

◆ atomic_flag_clear_explicit

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

Definition at line 183 of file stdatomic.h.

Typedef Documentation

◆ atomic_flag

typedef intptr_t atomic_flag

Definition at line 46 of file stdatomic.h.

◆ atomic_bool

typedef intptr_t atomic_bool

Definition at line 47 of file stdatomic.h.

◆ atomic_char

typedef intptr_t atomic_char

Definition at line 48 of file stdatomic.h.

◆ atomic_schar

typedef intptr_t atomic_schar

Definition at line 49 of file stdatomic.h.

◆ atomic_uchar

typedef intptr_t atomic_uchar

Definition at line 50 of file stdatomic.h.

◆ atomic_short

typedef intptr_t atomic_short

Definition at line 51 of file stdatomic.h.

◆ atomic_ushort

typedef intptr_t atomic_ushort

Definition at line 52 of file stdatomic.h.

◆ atomic_int

typedef intptr_t atomic_int

Definition at line 53 of file stdatomic.h.

◆ atomic_uint

typedef intptr_t atomic_uint

Definition at line 54 of file stdatomic.h.

◆ atomic_long

typedef intptr_t atomic_long

Definition at line 55 of file stdatomic.h.

◆ atomic_ulong

typedef intptr_t atomic_ulong

Definition at line 56 of file stdatomic.h.

◆ atomic_llong

typedef intptr_t atomic_llong

Definition at line 57 of file stdatomic.h.

◆ atomic_ullong

typedef intptr_t atomic_ullong

Definition at line 58 of file stdatomic.h.

◆ atomic_wchar_t

typedef intptr_t atomic_wchar_t

Definition at line 59 of file stdatomic.h.

◆ atomic_int_least8_t

typedef intptr_t atomic_int_least8_t

Definition at line 60 of file stdatomic.h.

◆ atomic_uint_least8_t

typedef intptr_t atomic_uint_least8_t

Definition at line 61 of file stdatomic.h.

◆ atomic_int_least16_t

typedef intptr_t atomic_int_least16_t

Definition at line 62 of file stdatomic.h.

◆ atomic_uint_least16_t

typedef intptr_t atomic_uint_least16_t

Definition at line 63 of file stdatomic.h.

◆ atomic_int_least32_t

typedef intptr_t atomic_int_least32_t

Definition at line 64 of file stdatomic.h.

◆ atomic_uint_least32_t

typedef intptr_t atomic_uint_least32_t

Definition at line 65 of file stdatomic.h.

◆ atomic_int_least64_t

typedef intptr_t atomic_int_least64_t

Definition at line 66 of file stdatomic.h.

◆ atomic_uint_least64_t

typedef intptr_t atomic_uint_least64_t

Definition at line 67 of file stdatomic.h.

◆ atomic_int_fast8_t

typedef intptr_t atomic_int_fast8_t

Definition at line 68 of file stdatomic.h.

◆ atomic_uint_fast8_t

typedef intptr_t atomic_uint_fast8_t

Definition at line 69 of file stdatomic.h.

◆ atomic_int_fast16_t

typedef intptr_t atomic_int_fast16_t

Definition at line 70 of file stdatomic.h.

◆ atomic_uint_fast16_t

typedef intptr_t atomic_uint_fast16_t

Definition at line 71 of file stdatomic.h.

◆ atomic_int_fast32_t

typedef intptr_t atomic_int_fast32_t

Definition at line 72 of file stdatomic.h.

◆ atomic_uint_fast32_t

typedef intptr_t atomic_uint_fast32_t

Definition at line 73 of file stdatomic.h.

◆ atomic_int_fast64_t

typedef intptr_t atomic_int_fast64_t

Definition at line 74 of file stdatomic.h.

◆ atomic_uint_fast64_t

typedef intptr_t atomic_uint_fast64_t

Definition at line 75 of file stdatomic.h.

◆ atomic_intptr_t

typedef intptr_t atomic_intptr_t

Definition at line 76 of file stdatomic.h.

◆ atomic_uintptr_t

typedef intptr_t atomic_uintptr_t

Definition at line 77 of file stdatomic.h.

◆ atomic_size_t

typedef intptr_t atomic_size_t

Definition at line 78 of file stdatomic.h.

◆ atomic_ptrdiff_t

typedef intptr_t atomic_ptrdiff_t

Definition at line 79 of file stdatomic.h.

◆ atomic_intmax_t

typedef intptr_t atomic_intmax_t

Definition at line 80 of file stdatomic.h.

◆ atomic_uintmax_t

typedef intptr_t atomic_uintmax_t

Definition at line 81 of file stdatomic.h.

Function Documentation

◆ atomic_store()

static void atomic_store ( intptr_t *  object,
intptr_t  desired 
)
inlinestatic

Definition at line 83 of file stdatomic.h.

◆ atomic_load()

static intptr_t atomic_load ( intptr_t *  object)
inlinestatic

Definition at line 92 of file stdatomic.h.

Referenced by atomic_fetch_and(), atomic_fetch_or(), and atomic_fetch_xor().

◆ atomic_compare_exchange_strong()

static int atomic_compare_exchange_strong ( intptr_t *  object,
intptr_t *  expected,
intptr_t  desired 
)
inlinestatic

Definition at line 107 of file stdatomic.h.

Referenced by atomic_fetch_and(), atomic_fetch_or(), and atomic_fetch_xor().

◆ atomic_fetch_add()

static intptr_t atomic_fetch_add ( intptr_t *  object,
intptr_t  operand 
)
inlinestatic

Definition at line 124 of file stdatomic.h.

◆ atomic_fetch_or()

static intptr_t atomic_fetch_or ( intptr_t *  object,
intptr_t  operand 
)
inlinestatic

Definition at line 132 of file stdatomic.h.

◆ atomic_fetch_xor()

static intptr_t atomic_fetch_xor ( intptr_t *  object,
intptr_t  operand 
)
inlinestatic

Definition at line 141 of file stdatomic.h.

◆ atomic_fetch_and()

static intptr_t atomic_fetch_and ( intptr_t *  object,
intptr_t  operand 
)
inlinestatic

Definition at line 150 of file stdatomic.h.

value
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 value
Definition: writing_filters.txt:86