30 #ifndef _GLIBCXX_ATOMIC_BASE_H
31 #define _GLIBCXX_ATOMIC_BASE_H 1
33 #pragma GCC system_header
39 namespace std _GLIBCXX_VISIBILITY(default)
41 _GLIBCXX_BEGIN_NAMESPACE_VERSION
64 const bool __cond1 = __m == memory_order_release;
65 const bool __cond2 = __m == memory_order_acq_rel;
66 memory_order __mo1(__cond1 ? memory_order_relaxed : __m);
67 memory_order __mo2(__cond2 ? memory_order_acquire : __mo1);
78 template<
typename _Tp>
96 _GLIBCXX_BEGIN_EXTERN_C
103 _GLIBCXX_END_EXTERN_C
105 #define ATOMIC_FLAG_INIT { false }
124 template<
typename _IntTp>
125 struct __atomic_base;
132 template<
typename _IntTp>
133 struct __atomic_base;
138 using __atomic2::atomic_flag;
139 using __atomic0::__atomic_base;
143 #if defined(_GLIBCXX_ATOMIC_BUILTINS_1) && defined(_GLIBCXX_ATOMIC_BUILTINS_2) \
144 && defined(_GLIBCXX_ATOMIC_BUILTINS_4) && defined(_GLIBCXX_ATOMIC_BUILTINS_8)
145 # define _GLIBCXX_ATOMIC_PROPERTY 2
146 # define _GLIBCXX_ATOMIC_NAMESPACE __atomic2
147 #elif defined(_GLIBCXX_ATOMIC_BUILTINS_1)
148 # define _GLIBCXX_ATOMIC_PROPERTY 1
149 # define _GLIBCXX_ATOMIC_NAMESPACE __atomic1
151 # define _GLIBCXX_ATOMIC_PROPERTY 0
152 # define _GLIBCXX_ATOMIC_NAMESPACE __atomic0
155 #define ATOMIC_CHAR_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY
156 #define ATOMIC_CHAR16_T_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY
157 #define ATOMIC_CHAR32_T_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY
158 #define ATOMIC_WCHAR_T_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY
159 #define ATOMIC_SHORT_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY
160 #define ATOMIC_INT_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY
161 #define ATOMIC_LONG_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY
162 #define ATOMIC_LLONG_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY
164 inline namespace _GLIBCXX_ATOMIC_NAMESPACE { }
282 #define ATOMIC_VAR_INIT(_VI) { _VI }
284 template<
typename _Tp>
287 template<
typename _Tp>
292 _GLIBCXX_END_NAMESPACE_VERSION
__atomic_base< unsigned int > atomic_uint
atomic_uint
__atomic_base< char16_t > atomic_char16_t
atomic_char16_t
__atomic_base< uint_fast16_t > atomic_uint_fast16_t
atomic_uint_fast16_t
__atomic_base< intmax_t > atomic_intmax_t
atomic_intmax_t
__atomic_base< uint_least8_t > atomic_uint_least8_t
atomic_uint_least8_t
__atomic_base< uintptr_t > atomic_uintptr_t
atomic_uintptr_t
__atomic_base< uint_least16_t > atomic_uint_least16_t
atomic_uint_least16_t
__atomic_base< unsigned long long > atomic_ullong
atomic_ullong
__atomic_base< short > atomic_short
atomic_short
__atomic_base< long > atomic_long
atomic_long
__atomic_base< int_fast8_t > atomic_int_fast8_t
atomic_int_fast8_t
__atomic_base< uint_fast64_t > atomic_uint_fast64_t
atomic_uint_fast64_t
__atomic_base< int_least16_t > atomic_int_least16_t
atomic_int_least16_t
__atomic_base< signed char > atomic_schar
atomic_schar
atomic 29.4.3, Generic atomic type, primary class template.
__atomic_base< int_fast32_t > atomic_int_fast32_t
atomic_int_fast32_t
__atomic_base< char32_t > atomic_char32_t
atomic_char32_t
__atomic_base< intptr_t > atomic_intptr_t
atomic_intptr_t
__atomic_base< int_least32_t > atomic_int_least32_t
atomic_int_least32_t
_Tp kill_dependency(_Tp __y)
kill_dependency
__atomic_base< unsigned long > atomic_ulong
atomic_ulong
__atomic_base< uintmax_t > atomic_uintmax_t
atomic_uintmax_t
__atomic_base< size_t > atomic_size_t
atomic_size_t
__atomic_base< int_least8_t > atomic_int_least8_t
atomic_int_least8_t
__atomic_base< uint_least64_t > atomic_uint_least64_t
atomic_uint_least64_t
Base type for atomic_flag.
__atomic_base< uint_least32_t > atomic_uint_least32_t
atomic_uint_least32_t
__atomic_base< int_fast16_t > atomic_int_fast16_t
atomic_int_fast16_t
__atomic_base< uint_fast8_t > atomic_uint_fast8_t
atomic_uint_fast8_t
__atomic_base< int_least64_t > atomic_int_least64_t
atomic_int_least64_t
__atomic_base< int > atomic_int
atomic_int
__atomic_base< long long > atomic_llong
atomic_llong
__atomic_base< ptrdiff_t > atomic_ptrdiff_t
atomic_ptrdiff_t
memory_order
Enumeration for memory_order.
__atomic_base< unsigned char > atomic_uchar
atomic_uchar
__atomic_base< uint_fast32_t > atomic_uint_fast32_t
atomic_uint_fast32_t
__atomic_base< unsigned short > atomic_ushort
atomic_ushort
__atomic_base< char > atomic_char
atomic_char
__atomic_base< int_fast64_t > atomic_int_fast64_t
atomic_int_fast64_t
__atomic_base< wchar_t > atomic_wchar_t
atomic_wchar_t