#ifdef __cplusplus
bool test_and_set( memory_order = memory_order_seq_cst ) volatile;
void clear( memory_order = memory_order_seq_cst ) volatile;
#ifdef __cplusplus
bool test_and_set( memory_order = memory_order_seq_cst ) volatile;
void clear( memory_order = memory_order_seq_cst ) volatile;
extern void atomic_flag_clear( volatile atomic_flag* );
extern void atomic_flag_clear_explicit
( volatile atomic_flag*, memory_order );
extern void atomic_flag_clear( volatile atomic_flag* );
extern void atomic_flag_clear_explicit
( volatile atomic_flag*, memory_order );
extern void __atomic_flag_wait__
( volatile atomic_flag* );
extern void __atomic_flag_wait_explicit__
extern void __atomic_flag_wait__
( volatile atomic_flag* );
extern void __atomic_flag_wait_explicit__
inline void atomic_flag::clear( memory_order __x__ ) volatile
{ atomic_flag_clear_explicit( this, __x__ ); }
inline void atomic_flag::clear( memory_order __x__ ) volatile
{ atomic_flag_clear_explicit( this, __x__ ); }
({ volatile __typeof__((__a__)->__f__)* __p__ = & ((__a__)->__f__); \
__typeof__(__m__) __v__ = (__m__); \
model_write_action((void *) __p__, __x__, (uint64_t) __v__); \
({ volatile __typeof__((__a__)->__f__)* __p__ = & ((__a__)->__f__); \
__typeof__(__m__) __v__ = (__m__); \
model_write_action((void *) __p__, __x__, (uint64_t) __v__); \
#define _ATOMIC_INIT_( __a__, __m__ ) \
({ volatile __typeof__((__a__)->__f__)* __p__ = & ((__a__)->__f__); \
__typeof__(__m__) __v__ = (__m__); \
model_init_action((void *) __p__, (uint64_t) __v__); \
#define _ATOMIC_INIT_( __a__, __m__ ) \
({ volatile __typeof__((__a__)->__f__)* __p__ = & ((__a__)->__f__); \
__typeof__(__m__) __v__ = (__m__); \
model_init_action((void *) __p__, (uint64_t) __v__); \
#define _ATOMIC_MODIFY_( __a__, __o__, __m__, __x__ ) \
({ volatile __typeof__((__a__)->__f__)* __p__ = & ((__a__)->__f__); \
#define _ATOMIC_MODIFY_( __a__, __o__, __m__, __x__ ) \
({ volatile __typeof__((__a__)->__f__)* __p__ = & ((__a__)->__f__); \
__typeof__((__a__)->__f__) __copy__= __old__; \
__copy__ __o__ __v__; \
model_rmw_action((void *)__p__, __x__, (uint64_t) __copy__); \
__typeof__((__a__)->__f__) __copy__= __old__; \
__copy__ __o__ __v__; \
model_rmw_action((void *)__p__, __x__, (uint64_t) __copy__); \
memory_order = memory_order_seq_cst) volatile;
bool compare_exchange_strong ( bool&, bool,
memory_order = memory_order_seq_cst) volatile;
memory_order = memory_order_seq_cst) volatile;
bool compare_exchange_strong ( bool&, bool,
memory_order = memory_order_seq_cst) volatile;
CPP0X( atomic_bool() = delete; )
CPP0X( constexpr explicit atomic_bool( bool __v__ ) : __f__( __v__ ) { } )
CPP0X( atomic_bool() = delete; )
CPP0X( constexpr explicit atomic_bool( bool __v__ ) : __f__( __v__ ) { } )
memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_bool*, bool*, bool,
memory_order, memory_order );
memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_bool*, bool*, bool,
memory_order, memory_order );
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( void*&, void*,
memory_order = memory_order_seq_cst ) volatile;
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( void*&, void*,
memory_order = memory_order_seq_cst ) volatile;
void* fetch_add( ptrdiff_t, memory_order = memory_order_seq_cst ) volatile;
void* fetch_sub( ptrdiff_t, memory_order = memory_order_seq_cst ) volatile;
void* fetch_add( ptrdiff_t, memory_order = memory_order_seq_cst ) volatile;
void* fetch_sub( ptrdiff_t, memory_order = memory_order_seq_cst ) volatile;
void**, void*, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_address*,
void**, void*, memory_order, memory_order );
void**, void*, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_address*,
void**, void*, memory_order, memory_order );
friend void* atomic_fetch_add_explicit( volatile atomic_address*, ptrdiff_t,
memory_order );
friend void* atomic_fetch_sub_explicit( volatile atomic_address*, ptrdiff_t,
friend void* atomic_fetch_add_explicit( volatile atomic_address*, ptrdiff_t,
memory_order );
friend void* atomic_fetch_sub_explicit( volatile atomic_address*, ptrdiff_t,
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( char&, char,
memory_order = memory_order_seq_cst ) volatile;
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( char&, char,
memory_order = memory_order_seq_cst ) volatile;
char*, char, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_char*,
char*, char, memory_order, memory_order );
char*, char, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_char*,
char*, char, memory_order, memory_order );
friend char atomic_fetch_add_explicit( volatile atomic_char*,
char, memory_order );
friend char atomic_fetch_sub_explicit( volatile atomic_char*,
friend char atomic_fetch_add_explicit( volatile atomic_char*,
char, memory_order );
friend char atomic_fetch_sub_explicit( volatile atomic_char*,
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( signed char&, signed char,
memory_order = memory_order_seq_cst ) volatile;
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( signed char&, signed char,
memory_order = memory_order_seq_cst ) volatile;
signed char fetch_add( signed char,
memory_order = memory_order_seq_cst ) volatile;
signed char fetch_sub( signed char,
signed char fetch_add( signed char,
memory_order = memory_order_seq_cst ) volatile;
signed char fetch_sub( signed char,
signed char*, signed char, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_schar*,
signed char*, signed char, memory_order, memory_order );
signed char*, signed char, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_schar*,
signed char*, signed char, memory_order, memory_order );
friend signed char atomic_fetch_add_explicit( volatile atomic_schar*,
signed char, memory_order );
friend signed char atomic_fetch_sub_explicit( volatile atomic_schar*,
friend signed char atomic_fetch_add_explicit( volatile atomic_schar*,
signed char, memory_order );
friend signed char atomic_fetch_sub_explicit( volatile atomic_schar*,
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( unsigned char&, unsigned char,
memory_order = memory_order_seq_cst ) volatile;
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( unsigned char&, unsigned char,
memory_order = memory_order_seq_cst ) volatile;
unsigned char fetch_add( unsigned char,
memory_order = memory_order_seq_cst ) volatile;
unsigned char fetch_sub( unsigned char,
unsigned char fetch_add( unsigned char,
memory_order = memory_order_seq_cst ) volatile;
unsigned char fetch_sub( unsigned char,
unsigned char*, unsigned char, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_uchar*,
unsigned char*, unsigned char, memory_order, memory_order );
unsigned char*, unsigned char, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_uchar*,
unsigned char*, unsigned char, memory_order, memory_order );
friend unsigned char atomic_fetch_add_explicit( volatile atomic_uchar*,
unsigned char, memory_order );
friend unsigned char atomic_fetch_sub_explicit( volatile atomic_uchar*,
friend unsigned char atomic_fetch_add_explicit( volatile atomic_uchar*,
unsigned char, memory_order );
friend unsigned char atomic_fetch_sub_explicit( volatile atomic_uchar*,
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( short&, short,
memory_order = memory_order_seq_cst ) volatile;
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( short&, short,
memory_order = memory_order_seq_cst ) volatile;
short*, short, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_short*,
short*, short, memory_order, memory_order );
short*, short, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_short*,
short*, short, memory_order, memory_order );
friend short atomic_fetch_add_explicit( volatile atomic_short*,
short, memory_order );
friend short atomic_fetch_sub_explicit( volatile atomic_short*,
friend short atomic_fetch_add_explicit( volatile atomic_short*,
short, memory_order );
friend short atomic_fetch_sub_explicit( volatile atomic_short*,
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( unsigned short&, unsigned short,
memory_order = memory_order_seq_cst ) volatile;
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( unsigned short&, unsigned short,
memory_order = memory_order_seq_cst ) volatile;
unsigned short fetch_add( unsigned short,
memory_order = memory_order_seq_cst ) volatile;
unsigned short fetch_sub( unsigned short,
unsigned short fetch_add( unsigned short,
memory_order = memory_order_seq_cst ) volatile;
unsigned short fetch_sub( unsigned short,
unsigned short*, unsigned short, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_ushort*,
unsigned short*, unsigned short, memory_order, memory_order );
unsigned short*, unsigned short, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_ushort*,
unsigned short*, unsigned short, memory_order, memory_order );
friend unsigned short atomic_fetch_add_explicit( volatile atomic_ushort*,
unsigned short, memory_order );
friend unsigned short atomic_fetch_sub_explicit( volatile atomic_ushort*,
friend unsigned short atomic_fetch_add_explicit( volatile atomic_ushort*,
unsigned short, memory_order );
friend unsigned short atomic_fetch_sub_explicit( volatile atomic_ushort*,
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( int&, int,
memory_order = memory_order_seq_cst ) volatile;
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( int&, int,
memory_order = memory_order_seq_cst ) volatile;
int*, int, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_int*,
int*, int, memory_order, memory_order );
int*, int, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_int*,
int*, int, memory_order, memory_order );
friend int atomic_fetch_add_explicit( volatile atomic_int*,
int, memory_order );
friend int atomic_fetch_sub_explicit( volatile atomic_int*,
friend int atomic_fetch_add_explicit( volatile atomic_int*,
int, memory_order );
friend int atomic_fetch_sub_explicit( volatile atomic_int*,
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( unsigned int&, unsigned int,
memory_order = memory_order_seq_cst ) volatile;
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( unsigned int&, unsigned int,
memory_order = memory_order_seq_cst ) volatile;
unsigned int fetch_add( unsigned int,
memory_order = memory_order_seq_cst ) volatile;
unsigned int fetch_sub( unsigned int,
unsigned int fetch_add( unsigned int,
memory_order = memory_order_seq_cst ) volatile;
unsigned int fetch_sub( unsigned int,
unsigned int*, unsigned int, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_uint*,
unsigned int*, unsigned int, memory_order, memory_order );
unsigned int*, unsigned int, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_uint*,
unsigned int*, unsigned int, memory_order, memory_order );
friend unsigned int atomic_fetch_add_explicit( volatile atomic_uint*,
unsigned int, memory_order );
friend unsigned int atomic_fetch_sub_explicit( volatile atomic_uint*,
friend unsigned int atomic_fetch_add_explicit( volatile atomic_uint*,
unsigned int, memory_order );
friend unsigned int atomic_fetch_sub_explicit( volatile atomic_uint*,
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( long&, long,
memory_order = memory_order_seq_cst ) volatile;
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( long&, long,
memory_order = memory_order_seq_cst ) volatile;
long*, long, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_long*,
long*, long, memory_order, memory_order );
long*, long, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_long*,
long*, long, memory_order, memory_order );
friend long atomic_fetch_add_explicit( volatile atomic_long*,
long, memory_order );
friend long atomic_fetch_sub_explicit( volatile atomic_long*,
friend long atomic_fetch_add_explicit( volatile atomic_long*,
long, memory_order );
friend long atomic_fetch_sub_explicit( volatile atomic_long*,
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( unsigned long&, unsigned long,
memory_order = memory_order_seq_cst ) volatile;
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( unsigned long&, unsigned long,
memory_order = memory_order_seq_cst ) volatile;
unsigned long fetch_add( unsigned long,
memory_order = memory_order_seq_cst ) volatile;
unsigned long fetch_sub( unsigned long,
unsigned long fetch_add( unsigned long,
memory_order = memory_order_seq_cst ) volatile;
unsigned long fetch_sub( unsigned long,
unsigned long*, unsigned long, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_ulong*,
unsigned long*, unsigned long, memory_order, memory_order );
unsigned long*, unsigned long, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_ulong*,
unsigned long*, unsigned long, memory_order, memory_order );
friend unsigned long atomic_fetch_add_explicit( volatile atomic_ulong*,
unsigned long, memory_order );
friend unsigned long atomic_fetch_sub_explicit( volatile atomic_ulong*,
friend unsigned long atomic_fetch_add_explicit( volatile atomic_ulong*,
unsigned long, memory_order );
friend unsigned long atomic_fetch_sub_explicit( volatile atomic_ulong*,
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( long long&, long long,
memory_order = memory_order_seq_cst ) volatile;
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( long long&, long long,
memory_order = memory_order_seq_cst ) volatile;
long long fetch_add( long long,
memory_order = memory_order_seq_cst ) volatile;
long long fetch_sub( long long,
long long fetch_add( long long,
memory_order = memory_order_seq_cst ) volatile;
long long fetch_sub( long long,
long long*, long long, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_llong*,
long long*, long long, memory_order, memory_order );
long long*, long long, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_llong*,
long long*, long long, memory_order, memory_order );
friend long long atomic_fetch_add_explicit( volatile atomic_llong*,
long long, memory_order );
friend long long atomic_fetch_sub_explicit( volatile atomic_llong*,
friend long long atomic_fetch_add_explicit( volatile atomic_llong*,
long long, memory_order );
friend long long atomic_fetch_sub_explicit( volatile atomic_llong*,
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( unsigned long long&, unsigned long long,
memory_order = memory_order_seq_cst ) volatile;
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( unsigned long long&, unsigned long long,
memory_order = memory_order_seq_cst ) volatile;
unsigned long long fetch_add( unsigned long long,
memory_order = memory_order_seq_cst ) volatile;
unsigned long long fetch_sub( unsigned long long,
unsigned long long fetch_add( unsigned long long,
memory_order = memory_order_seq_cst ) volatile;
unsigned long long fetch_sub( unsigned long long,
unsigned long long*, unsigned long long, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_ullong*,
unsigned long long*, unsigned long long, memory_order, memory_order );
unsigned long long*, unsigned long long, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_ullong*,
unsigned long long*, unsigned long long, memory_order, memory_order );
friend unsigned long long atomic_fetch_add_explicit( volatile atomic_ullong*,
unsigned long long, memory_order );
friend unsigned long long atomic_fetch_sub_explicit( volatile atomic_ullong*,
friend unsigned long long atomic_fetch_add_explicit( volatile atomic_ullong*,
unsigned long long, memory_order );
friend unsigned long long atomic_fetch_sub_explicit( volatile atomic_ullong*,
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( wchar_t&, wchar_t,
memory_order = memory_order_seq_cst ) volatile;
memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( wchar_t&, wchar_t,
memory_order = memory_order_seq_cst ) volatile;
wchar_t fetch_add( wchar_t,
memory_order = memory_order_seq_cst ) volatile;
wchar_t fetch_sub( wchar_t,
wchar_t fetch_add( wchar_t,
memory_order = memory_order_seq_cst ) volatile;
wchar_t fetch_sub( wchar_t,
wchar_t*, wchar_t, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_wchar_t*,
wchar_t*, wchar_t, memory_order, memory_order );
wchar_t*, wchar_t, memory_order, memory_order );
friend bool atomic_compare_exchange_strong_explicit( volatile atomic_wchar_t*,
wchar_t*, wchar_t, memory_order, memory_order );
friend wchar_t atomic_fetch_add_explicit( volatile atomic_wchar_t*,
wchar_t, memory_order );
friend wchar_t atomic_fetch_sub_explicit( volatile atomic_wchar_t*,
friend wchar_t atomic_fetch_add_explicit( volatile atomic_wchar_t*,
wchar_t, memory_order );
friend wchar_t atomic_fetch_sub_explicit( volatile atomic_wchar_t*,
bool compare_exchange_strong( T&, T, memory_order, memory_order ) volatile;
bool compare_exchange_weak( T&, T, memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( T&, T, memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( T&, T, memory_order, memory_order ) volatile;
bool compare_exchange_weak( T&, T, memory_order = memory_order_seq_cst ) volatile;
bool compare_exchange_strong( T&, T, memory_order = memory_order_seq_cst ) volatile;
inline void atomic_store_explicit
( volatile atomic_bool* __a__, bool __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
inline void atomic_store_explicit
( volatile atomic_bool* __a__, bool __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
inline void* atomic_load( volatile atomic_address* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline void* atomic_load( volatile atomic_address* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline void atomic_store_explicit
( volatile atomic_address* __a__, void* __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
inline void atomic_store_explicit
( volatile atomic_address* __a__, void* __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
inline char atomic_load( volatile atomic_char* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline char atomic_load( volatile atomic_char* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline void atomic_store_explicit
( volatile atomic_char* __a__, char __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
inline void atomic_store_explicit
( volatile atomic_char* __a__, char __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
inline signed char atomic_load( volatile atomic_schar* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline signed char atomic_load( volatile atomic_schar* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline void atomic_store_explicit
( volatile atomic_schar* __a__, signed char __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
inline void atomic_store_explicit
( volatile atomic_schar* __a__, signed char __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
inline unsigned char atomic_load( volatile atomic_uchar* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline unsigned char atomic_load( volatile atomic_uchar* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline void atomic_store_explicit
( volatile atomic_uchar* __a__, unsigned char __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
inline void atomic_store_explicit
( volatile atomic_uchar* __a__, unsigned char __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
inline short atomic_load( volatile atomic_short* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline short atomic_load( volatile atomic_short* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline void atomic_store_explicit
( volatile atomic_short* __a__, short __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
inline void atomic_store_explicit
( volatile atomic_short* __a__, short __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
inline unsigned short atomic_load( volatile atomic_ushort* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline unsigned short atomic_load( volatile atomic_ushort* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline void atomic_store_explicit
( volatile atomic_ushort* __a__, unsigned short __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
inline void atomic_store_explicit
( volatile atomic_ushort* __a__, unsigned short __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
inline int atomic_load( volatile atomic_int* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline int atomic_load( volatile atomic_int* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline void atomic_store_explicit
( volatile atomic_int* __a__, int __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
inline void atomic_store_explicit
( volatile atomic_int* __a__, int __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
inline unsigned int atomic_load( volatile atomic_uint* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline unsigned int atomic_load( volatile atomic_uint* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline void atomic_store_explicit
( volatile atomic_uint* __a__, unsigned int __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
inline void atomic_store_explicit
( volatile atomic_uint* __a__, unsigned int __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
inline long atomic_load( volatile atomic_long* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline long atomic_load( volatile atomic_long* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline void atomic_store_explicit
( volatile atomic_long* __a__, long __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
inline void atomic_store_explicit
( volatile atomic_long* __a__, long __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
inline unsigned long atomic_load( volatile atomic_ulong* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline unsigned long atomic_load( volatile atomic_ulong* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline void atomic_store_explicit
( volatile atomic_ulong* __a__, unsigned long __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
inline void atomic_store_explicit
( volatile atomic_ulong* __a__, unsigned long __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
inline long long atomic_load( volatile atomic_llong* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline long long atomic_load( volatile atomic_llong* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline void atomic_store_explicit
( volatile atomic_llong* __a__, long long __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
inline void atomic_store_explicit
( volatile atomic_llong* __a__, long long __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
inline unsigned long long atomic_load( volatile atomic_ullong* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline unsigned long long atomic_load( volatile atomic_ullong* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline void atomic_store_explicit
( volatile atomic_ullong* __a__, unsigned long long __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
inline void atomic_store_explicit
( volatile atomic_ullong* __a__, unsigned long long __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
inline wchar_t atomic_load( volatile atomic_wchar_t* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline wchar_t atomic_load( volatile atomic_wchar_t* __a__ )
{ return atomic_load_explicit( __a__, memory_order_seq_cst ); }
inline void atomic_store_explicit
( volatile atomic_wchar_t* __a__, wchar_t __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
inline void atomic_store_explicit
( volatile atomic_wchar_t* __a__, wchar_t __m__, memory_order __x__ )
{ _ATOMIC_STORE_( __a__, __m__, __x__ ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
{ return atomic_compare_exchange_strong_explicit( __a__, __e__, __m__,
memory_order_seq_cst, memory_order_seq_cst ); }
inline void* atomic_fetch_add_explicit
( volatile atomic_address* __a__, ptrdiff_t __m__, memory_order __x__ )
inline void* atomic_fetch_add_explicit
( volatile atomic_address* __a__, ptrdiff_t __m__, memory_order __x__ )
#define atomic_compare_exchange_strong_explicit( __a__, __e__, __m__, __x__, __y__ ) \
_ATOMIC_CMPSWP_( __a__, __e__, __m__, __x__ )
#define atomic_compare_exchange_strong_explicit( __a__, __e__, __m__, __x__, __y__ ) \
_ATOMIC_CMPSWP_( __a__, __e__, __m__, __x__ )
#define atomic_fetch_add_explicit( __a__, __m__, __x__ ) \
_ATOMIC_MODIFY_( __a__, +=, __m__, __x__ )
#define atomic_fetch_add_explicit( __a__, __m__, __x__ ) \
_ATOMIC_MODIFY_( __a__, +=, __m__, __x__ )
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
__x__ == memory_order_acq_rel ? memory_order_acquire :
__x__ == memory_order_release ? memory_order_relaxed : __x__ ); }
+#ifdef __cplusplus
+extern "C" {
+#endif
+static inline void atomic_thread_fence(memory_order order)
+{ _ATOMIC_FENCE_(order); }
+
+/** @todo Do we want to try to support a user's signal-handler? */
+static inline void atomic_signal_fence(memory_order order)
+{ /* No-op? */ }
+#ifdef __cplusplus
+}
+#endif
+