X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fimpatomic.h;h=55486197c74c2834ac58b6a8ab507529835212f6;hb=bf80445c97bd34afcfd208cc3ecb31edcd631bb6;hp=7ecc3737f930274b68532b6417284863f2bfd828;hpb=cc2accafaceffae9593b64b9f526d6c8d6239bd4;p=model-checker.git diff --git a/include/impatomic.h b/include/impatomic.h index 7ecc373..5548619 100644 --- a/include/impatomic.h +++ b/include/impatomic.h @@ -14,6 +14,8 @@ #ifdef __cplusplus namespace std { +#else +#include #endif #define CPP0X( feature ) @@ -1618,6 +1620,10 @@ inline bool atomic_load_explicit inline bool atomic_load ( volatile atomic_bool* __a__ ) { return atomic_load_explicit( __a__, memory_order_seq_cst ); } +inline void atomic_init +( volatile atomic_bool* __a__, bool __m__ ) +{ _ATOMIC_INIT_( __a__, __m__ ); } + inline void atomic_store_explicit ( volatile atomic_bool* __a__, bool __m__, memory_order __x__ ) { _ATOMIC_STORE_( __a__, __m__, __x__ ); } @@ -1665,6 +1671,10 @@ inline void* atomic_load_explicit inline void* atomic_load( volatile atomic_address* __a__ ) { return atomic_load_explicit( __a__, memory_order_seq_cst ); } +inline void atomic_init +( volatile atomic_address* __a__, void* __m__ ) +{ _ATOMIC_INIT_( __a__, __m__ ); } + inline void atomic_store_explicit ( volatile atomic_address* __a__, void* __m__, memory_order __x__ ) { _ATOMIC_STORE_( __a__, __m__, __x__ ); } @@ -1712,6 +1722,10 @@ inline char atomic_load_explicit inline char atomic_load( volatile atomic_char* __a__ ) { return atomic_load_explicit( __a__, memory_order_seq_cst ); } +inline void atomic_init +( volatile atomic_char* __a__, char __m__ ) +{ _ATOMIC_INIT_( __a__, __m__ ); } + inline void atomic_store_explicit ( volatile atomic_char* __a__, char __m__, memory_order __x__ ) { _ATOMIC_STORE_( __a__, __m__, __x__ ); } @@ -1759,6 +1773,10 @@ inline signed char atomic_load_explicit inline signed char atomic_load( volatile atomic_schar* __a__ ) { return atomic_load_explicit( __a__, memory_order_seq_cst ); } +inline void atomic_init +( volatile atomic_schar* __a__, signed char __m__ ) +{ _ATOMIC_INIT_( __a__, __m__ ); } + inline void atomic_store_explicit ( volatile atomic_schar* __a__, signed char __m__, memory_order __x__ ) { _ATOMIC_STORE_( __a__, __m__, __x__ ); } @@ -1806,6 +1824,10 @@ inline unsigned char atomic_load_explicit inline unsigned char atomic_load( volatile atomic_uchar* __a__ ) { return atomic_load_explicit( __a__, memory_order_seq_cst ); } +inline void atomic_init +( volatile atomic_uchar* __a__, unsigned char __m__ ) +{ _ATOMIC_INIT_( __a__, __m__ ); } + inline void atomic_store_explicit ( volatile atomic_uchar* __a__, unsigned char __m__, memory_order __x__ ) { _ATOMIC_STORE_( __a__, __m__, __x__ ); } @@ -1853,6 +1875,10 @@ inline short atomic_load_explicit inline short atomic_load( volatile atomic_short* __a__ ) { return atomic_load_explicit( __a__, memory_order_seq_cst ); } +inline void atomic_init +( volatile atomic_short* __a__, short __m__ ) +{ _ATOMIC_INIT_( __a__, __m__ ); } + inline void atomic_store_explicit ( volatile atomic_short* __a__, short __m__, memory_order __x__ ) { _ATOMIC_STORE_( __a__, __m__, __x__ ); } @@ -1900,6 +1926,10 @@ inline unsigned short atomic_load_explicit inline unsigned short atomic_load( volatile atomic_ushort* __a__ ) { return atomic_load_explicit( __a__, memory_order_seq_cst ); } +inline void atomic_init +( volatile atomic_ushort* __a__, unsigned short __m__ ) +{ _ATOMIC_INIT_( __a__, __m__ ); } + inline void atomic_store_explicit ( volatile atomic_ushort* __a__, unsigned short __m__, memory_order __x__ ) { _ATOMIC_STORE_( __a__, __m__, __x__ ); } @@ -1947,6 +1977,10 @@ inline int atomic_load_explicit inline int atomic_load( volatile atomic_int* __a__ ) { return atomic_load_explicit( __a__, memory_order_seq_cst ); } +inline void atomic_init +( volatile atomic_int* __a__, int __m__ ) +{ _ATOMIC_INIT_( __a__, __m__ ); } + inline void atomic_store_explicit ( volatile atomic_int* __a__, int __m__, memory_order __x__ ) { _ATOMIC_STORE_( __a__, __m__, __x__ ); } @@ -1994,6 +2028,10 @@ inline unsigned int atomic_load_explicit inline unsigned int atomic_load( volatile atomic_uint* __a__ ) { return atomic_load_explicit( __a__, memory_order_seq_cst ); } +inline void atomic_init +( volatile atomic_uint* __a__, unsigned int __m__ ) +{ _ATOMIC_INIT_( __a__, __m__ ); } + inline void atomic_store_explicit ( volatile atomic_uint* __a__, unsigned int __m__, memory_order __x__ ) { _ATOMIC_STORE_( __a__, __m__, __x__ ); } @@ -2041,6 +2079,10 @@ inline long atomic_load_explicit inline long atomic_load( volatile atomic_long* __a__ ) { return atomic_load_explicit( __a__, memory_order_seq_cst ); } +inline void atomic_init +( volatile atomic_long* __a__, long __m__ ) +{ _ATOMIC_INIT_( __a__, __m__ ); } + inline void atomic_store_explicit ( volatile atomic_long* __a__, long __m__, memory_order __x__ ) { _ATOMIC_STORE_( __a__, __m__, __x__ ); } @@ -2088,6 +2130,10 @@ inline unsigned long atomic_load_explicit inline unsigned long atomic_load( volatile atomic_ulong* __a__ ) { return atomic_load_explicit( __a__, memory_order_seq_cst ); } +inline void atomic_init +( volatile atomic_ulong* __a__, unsigned long __m__ ) +{ _ATOMIC_INIT_( __a__, __m__ ); } + inline void atomic_store_explicit ( volatile atomic_ulong* __a__, unsigned long __m__, memory_order __x__ ) { _ATOMIC_STORE_( __a__, __m__, __x__ ); } @@ -2135,6 +2181,10 @@ inline long long atomic_load_explicit inline long long atomic_load( volatile atomic_llong* __a__ ) { return atomic_load_explicit( __a__, memory_order_seq_cst ); } +inline void atomic_init +( volatile atomic_llong* __a__, long long __m__ ) +{ _ATOMIC_INIT_( __a__, __m__ ); } + inline void atomic_store_explicit ( volatile atomic_llong* __a__, long long __m__, memory_order __x__ ) { _ATOMIC_STORE_( __a__, __m__, __x__ ); } @@ -2182,6 +2232,10 @@ inline unsigned long long atomic_load_explicit inline unsigned long long atomic_load( volatile atomic_ullong* __a__ ) { return atomic_load_explicit( __a__, memory_order_seq_cst ); } +inline void atomic_init +( volatile atomic_ullong* __a__, unsigned long long __m__ ) +{ _ATOMIC_INIT_( __a__, __m__ ); } + inline void atomic_store_explicit ( volatile atomic_ullong* __a__, unsigned long long __m__, memory_order __x__ ) { _ATOMIC_STORE_( __a__, __m__, __x__ ); } @@ -2229,6 +2283,10 @@ inline wchar_t atomic_load_explicit inline wchar_t atomic_load( volatile atomic_wchar_t* __a__ ) { return atomic_load_explicit( __a__, memory_order_seq_cst ); } +inline void atomic_init +( volatile atomic_wchar_t* __a__, wchar_t __m__ ) +{ _ATOMIC_INIT_( __a__, __m__ ); } + inline void atomic_store_explicit ( volatile atomic_wchar_t* __a__, wchar_t __m__, memory_order __x__ ) { _ATOMIC_STORE_( __a__, __m__, __x__ ); } @@ -3841,6 +3899,19 @@ T* atomic::fetch_sub( ptrdiff_t __v__, memory_order __x__ ) volatile #endif +#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 + #ifdef __cplusplus } // namespace std