FFmpeg
Loading...
Searching...
No Matches
atomic.c File Reference
#include <limits.h>
#include <stdint.h>
#include <stdio.h>
#include <stdatomic.h>

Go to the source code of this file.

Macros

#define TEST(A, T, name, V1, V2)
 

Functions

static void callback (void)
 
int main (void)
 

Variables

static int called
 

Macro Definition Documentation

◆ TEST

#define TEST ( A,
T,
name,
V1,
V2 )
Value:
do { \
A object = 0; \
T expected, r; \
atomic_store(&object, (T)(V1)); \
r = atomic_exchange(&object, (T)(V2)); \
printf(name " exchange %lld\n", (long long)r); \
r = atomic_fetch_add(&object, (T)1); \
printf(name " add %lld\n", (long long)r); \
r = atomic_fetch_sub(&object, (T)((uint64_t)(V2) + 1)); \
printf(name " sub %lld\n", (long long)r); \
r = atomic_fetch_or(&object, (T)0x10); \
printf(name " or %lld\n", (long long)r); \
r = atomic_fetch_xor(&object, (T)0x10); \
printf(name " xor %lld\n", (long long)r); \
r = atomic_fetch_and(&object, (T)1); \
printf(name " and %lld\n", (long long)r); \
atomic_store(&object, (T)0x5a); \
expected = (T)(V1); \
r = atomic_compare_exchange_strong(&object, &expected, (T)(V2)); \
printf(name " cas %lld %lld\n", \
(long long)r, (long long)expected); \
do { \
r = atomic_compare_exchange_weak(&object, &expected, (T)(V1)); \
} while (!r); \
printf(name " cas weak %lld %lld %lld\n", \
(long long)r, (long long)expected, \
(long long)atomic_load(&object)); \
} while (0)
#define T(x)
Definition vpx_arith.h:29
#define A(x)
Definition vpx_arith.h:28
#define r
Definition input.c:42
const char * name
Definition qsvenc.c:142
#define atomic_fetch_xor(object, operand)
Definition stdatomic.h:321
#define atomic_compare_exchange_weak(object, expected, desired)
Definition stdatomic.h:291
#define atomic_compare_exchange_strong(object, expected, desired)
Definition stdatomic.h:281
#define atomic_exchange(object, desired)
Definition stdatomic.h:262
#define atomic_fetch_or(object, operand)
Definition stdatomic.h:318
#define atomic_fetch_sub(object, operand)
Definition stdatomic.h:315
#define atomic_load(object)
Definition stdatomic.h:250
#define atomic_fetch_and(object, operand)
Definition stdatomic.h:324
#define atomic_fetch_add(object, operand)
Definition stdatomic.h:312

Definition at line 39 of file atomic.c.

Referenced by main().

Function Documentation

◆ callback()

static void callback ( void )
static

Definition at line 34 of file atomic.c.

Referenced by av_opt_query_ranges(), and parse_atoms().

◆ main()

int main ( void )

Definition at line 69 of file atomic.c.

Variable Documentation

◆ called

int called
static

Definition at line 32 of file atomic.c.

Referenced by callback(), and main().