clang 22.0.0git
stdatomic.h File Reference
#include <stddef.h>
#include <stdint.h>

Go to the source code of this file.

Classes

struct  atomic_flag

Macros

#define ATOMIC_BOOL_LOCK_FREE   __CLANG_ATOMIC_BOOL_LOCK_FREE
#define ATOMIC_CHAR_LOCK_FREE   __CLANG_ATOMIC_CHAR_LOCK_FREE
#define ATOMIC_CHAR16_T_LOCK_FREE   __CLANG_ATOMIC_CHAR16_T_LOCK_FREE
#define ATOMIC_CHAR32_T_LOCK_FREE   __CLANG_ATOMIC_CHAR32_T_LOCK_FREE
#define ATOMIC_WCHAR_T_LOCK_FREE   __CLANG_ATOMIC_WCHAR_T_LOCK_FREE
#define ATOMIC_SHORT_LOCK_FREE   __CLANG_ATOMIC_SHORT_LOCK_FREE
#define ATOMIC_INT_LOCK_FREE   __CLANG_ATOMIC_INT_LOCK_FREE
#define ATOMIC_LONG_LOCK_FREE   __CLANG_ATOMIC_LONG_LOCK_FREE
#define ATOMIC_LLONG_LOCK_FREE   __CLANG_ATOMIC_LLONG_LOCK_FREE
#define ATOMIC_POINTER_LOCK_FREE   __CLANG_ATOMIC_POINTER_LOCK_FREE
#define atomic_init   __c11_atomic_init
#define kill_dependency(y)
#define atomic_thread_fence(order)
#define atomic_signal_fence(order)
#define atomic_is_lock_free(obj)
#define atomic_store(object, desired)
#define atomic_store_explicit   __c11_atomic_store
#define atomic_load(object)
#define atomic_load_explicit   __c11_atomic_load
#define atomic_exchange(object, desired)
#define atomic_exchange_explicit   __c11_atomic_exchange
#define atomic_compare_exchange_strong(object, expected, desired)
#define atomic_compare_exchange_strong_explicit   __c11_atomic_compare_exchange_strong
#define atomic_compare_exchange_weak(object, expected, desired)
#define atomic_compare_exchange_weak_explicit   __c11_atomic_compare_exchange_weak
#define atomic_fetch_add(object, operand)
#define atomic_fetch_add_explicit   __c11_atomic_fetch_add
#define atomic_fetch_sub(object, operand)
#define atomic_fetch_sub_explicit   __c11_atomic_fetch_sub
#define atomic_fetch_or(object, operand)
#define atomic_fetch_or_explicit   __c11_atomic_fetch_or
#define atomic_fetch_xor(object, operand)
#define atomic_fetch_xor_explicit   __c11_atomic_fetch_xor
#define atomic_fetch_and(object, operand)
#define atomic_fetch_and_explicit   __c11_atomic_fetch_and
#define ATOMIC_FLAG_INIT   { 0 }
#define atomic_flag_test_and_set(object)
#define atomic_flag_test_and_set_explicit(object, order)
#define atomic_flag_clear(object)
#define atomic_flag_clear_explicit(object, order)

Typedefs

typedef enum memory_order memory_order
typedef struct atomic_flag atomic_flag

Enumerations

enum  memory_order {
  memory_order_relaxed = __ATOMIC_RELAXED , memory_order_consume = __ATOMIC_CONSUME , memory_order_acquire = __ATOMIC_ACQUIRE , memory_order_release = __ATOMIC_RELEASE ,
  memory_order_acq_rel = __ATOMIC_ACQ_REL , memory_order_seq_cst = __ATOMIC_SEQ_CST
}

Functions

void atomic_thread_fence (memory_order)
void atomic_signal_fence (memory_order)
typedef _Atomic (_Bool) atomic_bool
typedef _Atomic (char) atomic_char
typedef _Atomic (signed char) atomic_schar
typedef _Atomic (unsigned char) atomic_uchar
typedef _Atomic (short) atomic_short
typedef _Atomic (unsigned short) atomic_ushort
typedef _Atomic (int) atomic_int
typedef _Atomic (unsigned int) atomic_uint
typedef _Atomic (long) atomic_long
typedef _Atomic (unsigned long) atomic_ulong
typedef _Atomic (long long) atomic_llong
typedef _Atomic (unsigned long long) atomic_ullong
typedef _Atomic (uint_least16_t) atomic_char16_t
typedef _Atomic (uint_least32_t) atomic_char32_t
typedef _Atomic (wchar_t) atomic_wchar_t
typedef _Atomic (int_least8_t) atomic_int_least8_t
typedef _Atomic (uint_least8_t) atomic_uint_least8_t
typedef _Atomic (int_least16_t) atomic_int_least16_t
typedef _Atomic (int_least32_t) atomic_int_least32_t
typedef _Atomic (int_least64_t) atomic_int_least64_t
typedef _Atomic (uint_least64_t) atomic_uint_least64_t
typedef _Atomic (int_fast8_t) atomic_int_fast8_t
typedef _Atomic (uint_fast8_t) atomic_uint_fast8_t
typedef _Atomic (int_fast16_t) atomic_int_fast16_t
typedef _Atomic (uint_fast16_t) atomic_uint_fast16_t
typedef _Atomic (int_fast32_t) atomic_int_fast32_t
typedef _Atomic (uint_fast32_t) atomic_uint_fast32_t
typedef _Atomic (int_fast64_t) atomic_int_fast64_t
typedef _Atomic (uint_fast64_t) atomic_uint_fast64_t
typedef _Atomic (intptr_t) atomic_intptr_t
typedef _Atomic (uintptr_t) atomic_uintptr_t
typedef _Atomic (size_t) atomic_size_t
typedef _Atomic (ptrdiff_t) atomic_ptrdiff_t
typedef _Atomic (intmax_t) atomic_intmax_t
typedef _Atomic (uintmax_t) atomic_uintmax_t
_Bool atomic_flag_test_and_set (volatile atomic_flag *)
_Bool atomic_flag_test_and_set_explicit (volatile atomic_flag *, memory_order)
void atomic_flag_clear (volatile atomic_flag *)
void atomic_flag_clear_explicit (volatile atomic_flag *, memory_order)

Macro Definition Documentation

◆ ATOMIC_BOOL_LOCK_FREE

#define ATOMIC_BOOL_LOCK_FREE   __CLANG_ATOMIC_BOOL_LOCK_FREE

Definition at line 36 of file stdatomic.h.

◆ ATOMIC_CHAR16_T_LOCK_FREE

#define ATOMIC_CHAR16_T_LOCK_FREE   __CLANG_ATOMIC_CHAR16_T_LOCK_FREE

Definition at line 41 of file stdatomic.h.

◆ ATOMIC_CHAR32_T_LOCK_FREE

#define ATOMIC_CHAR32_T_LOCK_FREE   __CLANG_ATOMIC_CHAR32_T_LOCK_FREE

Definition at line 42 of file stdatomic.h.

◆ ATOMIC_CHAR_LOCK_FREE

#define ATOMIC_CHAR_LOCK_FREE   __CLANG_ATOMIC_CHAR_LOCK_FREE

Definition at line 37 of file stdatomic.h.

◆ atomic_compare_exchange_strong

#define atomic_compare_exchange_strong ( object,
expected,
desired )
Value:
__c11_atomic_compare_exchange_strong(object, expected, desired, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)

Definition at line 150 of file stdatomic.h.

◆ atomic_compare_exchange_strong_explicit

#define atomic_compare_exchange_strong_explicit   __c11_atomic_compare_exchange_strong

Definition at line 151 of file stdatomic.h.

◆ atomic_compare_exchange_weak

#define atomic_compare_exchange_weak ( object,
expected,
desired )
Value:
__c11_atomic_compare_exchange_weak(object, expected, desired, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)

Definition at line 153 of file stdatomic.h.

◆ atomic_compare_exchange_weak_explicit

#define atomic_compare_exchange_weak_explicit   __c11_atomic_compare_exchange_weak

Definition at line 154 of file stdatomic.h.

◆ atomic_exchange

#define atomic_exchange ( object,
desired )
Value:
__c11_atomic_exchange(object, desired, __ATOMIC_SEQ_CST)

Definition at line 147 of file stdatomic.h.

◆ atomic_exchange_explicit

#define atomic_exchange_explicit   __c11_atomic_exchange

Definition at line 148 of file stdatomic.h.

◆ atomic_fetch_add

#define atomic_fetch_add ( object,
operand )
Value:
__c11_atomic_fetch_add(object, operand, __ATOMIC_SEQ_CST)

Definition at line 156 of file stdatomic.h.

◆ atomic_fetch_add_explicit

#define atomic_fetch_add_explicit   __c11_atomic_fetch_add

Definition at line 157 of file stdatomic.h.

◆ atomic_fetch_and

#define atomic_fetch_and ( object,
operand )
Value:
__c11_atomic_fetch_and(object, operand, __ATOMIC_SEQ_CST)

Definition at line 168 of file stdatomic.h.

◆ atomic_fetch_and_explicit

#define atomic_fetch_and_explicit   __c11_atomic_fetch_and

Definition at line 169 of file stdatomic.h.

◆ atomic_fetch_or

#define atomic_fetch_or ( object,
operand )
Value:
__c11_atomic_fetch_or(object, operand, __ATOMIC_SEQ_CST)

Definition at line 162 of file stdatomic.h.

◆ atomic_fetch_or_explicit

#define atomic_fetch_or_explicit   __c11_atomic_fetch_or

Definition at line 163 of file stdatomic.h.

◆ atomic_fetch_sub

#define atomic_fetch_sub ( object,
operand )
Value:
__c11_atomic_fetch_sub(object, operand, __ATOMIC_SEQ_CST)

Definition at line 159 of file stdatomic.h.

◆ atomic_fetch_sub_explicit

#define atomic_fetch_sub_explicit   __c11_atomic_fetch_sub

Definition at line 160 of file stdatomic.h.

◆ atomic_fetch_xor

#define atomic_fetch_xor ( object,
operand )
Value:
__c11_atomic_fetch_xor(object, operand, __ATOMIC_SEQ_CST)

Definition at line 165 of file stdatomic.h.

◆ atomic_fetch_xor_explicit

#define atomic_fetch_xor_explicit   __c11_atomic_fetch_xor

Definition at line 166 of file stdatomic.h.

◆ atomic_flag_clear

#define atomic_flag_clear ( object)
Value:
__c11_atomic_store(&(object)->_Value, 0, __ATOMIC_SEQ_CST)

Definition at line 195 of file stdatomic.h.

◆ atomic_flag_clear_explicit

#define atomic_flag_clear_explicit ( object,
order )
Value:
__c11_atomic_store(&(object)->_Value, 0, order)

Definition at line 196 of file stdatomic.h.

◆ ATOMIC_FLAG_INIT

#define ATOMIC_FLAG_INIT   { 0 }

Definition at line 178 of file stdatomic.h.

◆ atomic_flag_test_and_set

#define atomic_flag_test_and_set ( object)
Value:
__c11_atomic_exchange(&(object)->_Value, 1, __ATOMIC_SEQ_CST)

Definition at line 192 of file stdatomic.h.

◆ atomic_flag_test_and_set_explicit

#define atomic_flag_test_and_set_explicit ( object,
order )
Value:
__c11_atomic_exchange(&(object)->_Value, 1, order)

Definition at line 193 of file stdatomic.h.

◆ atomic_init

#define atomic_init   __c11_atomic_init

Definition at line 64 of file stdatomic.h.

◆ ATOMIC_INT_LOCK_FREE

#define ATOMIC_INT_LOCK_FREE   __CLANG_ATOMIC_INT_LOCK_FREE

Definition at line 45 of file stdatomic.h.

◆ atomic_is_lock_free

#define atomic_is_lock_free ( obj)
Value:
__c11_atomic_is_lock_free(sizeof(*(obj)))

Definition at line 90 of file stdatomic.h.

◆ ATOMIC_LLONG_LOCK_FREE

#define ATOMIC_LLONG_LOCK_FREE   __CLANG_ATOMIC_LLONG_LOCK_FREE

Definition at line 47 of file stdatomic.h.

◆ atomic_load

#define atomic_load ( object)
Value:
__c11_atomic_load(object, __ATOMIC_SEQ_CST)

Definition at line 144 of file stdatomic.h.

◆ atomic_load_explicit

#define atomic_load_explicit   __c11_atomic_load

Definition at line 145 of file stdatomic.h.

◆ ATOMIC_LONG_LOCK_FREE

#define ATOMIC_LONG_LOCK_FREE   __CLANG_ATOMIC_LONG_LOCK_FREE

Definition at line 46 of file stdatomic.h.

◆ ATOMIC_POINTER_LOCK_FREE

#define ATOMIC_POINTER_LOCK_FREE   __CLANG_ATOMIC_POINTER_LOCK_FREE

Definition at line 48 of file stdatomic.h.

◆ ATOMIC_SHORT_LOCK_FREE

#define ATOMIC_SHORT_LOCK_FREE   __CLANG_ATOMIC_SHORT_LOCK_FREE

Definition at line 44 of file stdatomic.h.

◆ atomic_signal_fence

#define atomic_signal_fence ( order)
Value:
__c11_atomic_signal_fence(order)

Definition at line 86 of file stdatomic.h.

◆ atomic_store

#define atomic_store ( object,
desired )
Value:
__c11_atomic_store(object, desired, __ATOMIC_SEQ_CST)

Definition at line 141 of file stdatomic.h.

◆ atomic_store_explicit

#define atomic_store_explicit   __c11_atomic_store

Definition at line 142 of file stdatomic.h.

◆ atomic_thread_fence

#define atomic_thread_fence ( order)
Value:
__c11_atomic_thread_fence(order)

Definition at line 85 of file stdatomic.h.

◆ ATOMIC_WCHAR_T_LOCK_FREE

#define ATOMIC_WCHAR_T_LOCK_FREE   __CLANG_ATOMIC_WCHAR_T_LOCK_FREE

Definition at line 43 of file stdatomic.h.

◆ kill_dependency

#define kill_dependency ( y)
Value:
(y)

Definition at line 77 of file stdatomic.h.

Typedef Documentation

◆ atomic_flag

typedef struct atomic_flag atomic_flag

◆ memory_order

typedef enum memory_order memory_order

Enumeration Type Documentation

◆ memory_order

Enumerator
memory_order_relaxed 
memory_order_consume 
memory_order_acquire 
memory_order_release 
memory_order_acq_rel 
memory_order_seq_cst 

Definition at line 68 of file stdatomic.h.

Function Documentation

◆ _Atomic() [1/35]

typedef _Atomic ( _Bool )

◆ _Atomic() [2/35]

typedef _Atomic ( char )

◆ _Atomic() [3/35]

typedef _Atomic ( int )

◆ _Atomic() [4/35]

typedef _Atomic ( int_fast16_t )

◆ _Atomic() [5/35]

typedef _Atomic ( int_fast32_t )

◆ _Atomic() [6/35]

typedef _Atomic ( int_fast64_t )

◆ _Atomic() [7/35]

typedef _Atomic ( int_fast8_t )

◆ _Atomic() [8/35]

typedef _Atomic ( int_least16_t )

◆ _Atomic() [9/35]

typedef _Atomic ( int_least32_t )

◆ _Atomic() [10/35]

typedef _Atomic ( int_least64_t )

◆ _Atomic() [11/35]

typedef _Atomic ( int_least8_t )

◆ _Atomic() [12/35]

typedef _Atomic ( intmax_t )

◆ _Atomic() [13/35]

typedef _Atomic ( intptr_t )

◆ _Atomic() [14/35]

typedef _Atomic ( long long )

◆ _Atomic() [15/35]

typedef _Atomic ( long )

◆ _Atomic() [16/35]

typedef _Atomic ( ptrdiff_t )

◆ _Atomic() [17/35]

typedef _Atomic ( short )

◆ _Atomic() [18/35]

typedef _Atomic ( signed char )

◆ _Atomic() [19/35]

typedef _Atomic ( size_t )

◆ _Atomic() [20/35]

typedef _Atomic ( uint_fast16_t )

◆ _Atomic() [21/35]

typedef _Atomic ( uint_fast32_t )

◆ _Atomic() [22/35]

typedef _Atomic ( uint_fast64_t )

◆ _Atomic() [23/35]

typedef _Atomic ( uint_fast8_t )

◆ _Atomic() [24/35]

typedef _Atomic ( uint_least16_t )

◆ _Atomic() [25/35]

typedef _Atomic ( uint_least32_t )

◆ _Atomic() [26/35]

typedef _Atomic ( uint_least64_t )

◆ _Atomic() [27/35]

typedef _Atomic ( uint_least8_t )

◆ _Atomic() [28/35]

typedef _Atomic ( uintmax_t )

◆ _Atomic() [29/35]

typedef _Atomic ( uintptr_t )

◆ _Atomic() [30/35]

typedef _Atomic ( unsigned char )

◆ _Atomic() [31/35]

typedef _Atomic ( unsigned int )

◆ _Atomic() [32/35]

typedef _Atomic ( unsigned long long )

◆ _Atomic() [33/35]

typedef _Atomic ( unsigned long )

◆ _Atomic() [34/35]

typedef _Atomic ( unsigned short )

◆ _Atomic() [35/35]

typedef _Atomic ( wchar_t )

◆ atomic_flag_clear()

void atomic_flag_clear ( volatile atomic_flag * )

◆ atomic_flag_clear_explicit()

void atomic_flag_clear_explicit ( volatile atomic_flag * ,
memory_order  )

◆ atomic_flag_test_and_set()

_Bool atomic_flag_test_and_set ( volatile atomic_flag * )

◆ atomic_flag_test_and_set_explicit()

_Bool atomic_flag_test_and_set_explicit ( volatile atomic_flag * ,
memory_order  )

◆ atomic_signal_fence()

void atomic_signal_fence ( memory_order )

◆ atomic_thread_fence()

void atomic_thread_fence ( memory_order )