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

Go to the source code of this file.

Macros

#define WIN32_LEAN_AND_MEAN
 
#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)   MemoryBarrier();
 
#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)   (MemoryBarrier(), *(object))
 
#define atomic_load_explicit(object, order)   atomic_load(object)
 
#define atomic_exchange(object, desired)   InterlockedExchangePointer((PVOID volatile *)object, (PVOID)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_add(object, operand)   InterlockedExchangeAdd(object, operand)
 
#define atomic_fetch_sub(object, operand)   InterlockedExchangeAdd(object, -(operand))
 
#define atomic_fetch_or(object, operand)   InterlockedOr(object, operand)
 
#define atomic_fetch_xor(object, operand)   InterlockedXor(object, operand)
 
#define atomic_fetch_and(object, operand)   InterlockedAnd(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 int atomic_compare_exchange_strong (intptr_t *object, intptr_t *expected, intptr_t desired)
 

Macro Definition Documentation

◆ WIN32_LEAN_AND_MEAN

#define WIN32_LEAN_AND_MEAN

Definition at line 22 of file stdatomic.h.

◆ 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)    MemoryBarrier();

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

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

Definition at line 83 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

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

Definition at line 92 of file stdatomic.h.

◆ atomic_load_explicit

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

Definition at line 95 of file stdatomic.h.

◆ atomic_exchange

#define atomic_exchange (   object,
  desired 
)    InterlockedExchangePointer((PVOID volatile *)object, (PVOID)desired)

Definition at line 98 of file stdatomic.h.

◆ atomic_exchange_explicit

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

Definition at line 101 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 113 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 116 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 119 of file stdatomic.h.

◆ atomic_fetch_add

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

Definition at line 138 of file stdatomic.h.

◆ atomic_fetch_sub

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

Definition at line 141 of file stdatomic.h.

◆ atomic_fetch_or

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

Definition at line 144 of file stdatomic.h.

◆ atomic_fetch_xor

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

Definition at line 147 of file stdatomic.h.

◆ atomic_fetch_and

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

Definition at line 150 of file stdatomic.h.

◆ atomic_fetch_add_explicit

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

Definition at line 154 of file stdatomic.h.

◆ atomic_fetch_sub_explicit

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

Definition at line 157 of file stdatomic.h.

◆ atomic_fetch_or_explicit

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

Definition at line 160 of file stdatomic.h.

◆ atomic_fetch_xor_explicit

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

Definition at line 163 of file stdatomic.h.

◆ atomic_fetch_and_explicit

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

Definition at line 166 of file stdatomic.h.

◆ atomic_flag_test_and_set

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

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

◆ atomic_flag_clear

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

Definition at line 175 of file stdatomic.h.

◆ atomic_flag_clear_explicit

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

Definition at line 178 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_compare_exchange_strong()

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

Definition at line 104 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