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