diff options
Diffstat (limited to 'libcxx/include')
| -rw-r--r-- | libcxx/include/__mutex_base | 6 | ||||
| -rw-r--r-- | libcxx/include/atomic | 6 | ||||
| -rw-r--r-- | libcxx/include/condition_variable | 4 | ||||
| -rw-r--r-- | libcxx/include/future | 6 | ||||
| -rw-r--r-- | libcxx/include/ios | 4 | ||||
| -rw-r--r-- | libcxx/include/memory | 6 | ||||
| -rw-r--r-- | libcxx/include/mutex | 4 | ||||
| -rw-r--r-- | libcxx/include/shared_mutex | 6 | ||||
| -rw-r--r-- | libcxx/include/thread | 6 |
9 files changed, 43 insertions, 5 deletions
diff --git a/libcxx/include/__mutex_base b/libcxx/include/__mutex_base index 293feada648..d5ece7c1454 100644 --- a/libcxx/include/__mutex_base +++ b/libcxx/include/__mutex_base @@ -22,6 +22,8 @@ _LIBCPP_BEGIN_NAMESPACE_STD +#ifndef _LIBCPP_HAS_NO_THREADS + class _LIBCPP_TYPE_VIS mutex { pthread_mutex_t __m_; @@ -315,6 +317,7 @@ private: void __do_timed_wait(unique_lock<mutex>& __lk, chrono::time_point<chrono::system_clock, chrono::nanoseconds>) _NOEXCEPT; }; +#endif // !_LIBCPP_HAS_NO_THREADS template <class _To, class _Rep, class _Period> inline _LIBCPP_INLINE_VISIBILITY @@ -332,6 +335,7 @@ __ceil(chrono::duration<_Rep, _Period> __d) return __r; } +#ifndef _LIBCPP_HAS_NO_THREADS template <class _Predicate> void condition_variable::wait(unique_lock<mutex>& __lk, _Predicate __pred) @@ -396,6 +400,8 @@ condition_variable::wait_for(unique_lock<mutex>& __lk, _VSTD::move(__pred)); } +#endif // !_LIBCPP_HAS_NO_THREADS + _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP___MUTEX_BASE diff --git a/libcxx/include/atomic b/libcxx/include/atomic index 91f18292d73..b01a59f5f96 100644 --- a/libcxx/include/atomic +++ b/libcxx/include/atomic @@ -533,6 +533,10 @@ void atomic_signal_fence(memory_order m) noexcept; #pragma GCC system_header #endif +#ifdef _LIBCPP_HAS_NO_THREADS +#error <atomic> is not supported on this single threaded system +#else // !_LIBCPP_HAS_NO_THREADS + _LIBCPP_BEGIN_NAMESPACE_STD #if !__has_feature(cxx_atomic) && _GNUC_VER < 407 @@ -1779,4 +1783,6 @@ typedef atomic<uintmax_t> atomic_uintmax_t; _LIBCPP_END_NAMESPACE_STD +#endif // !_LIBCPP_HAS_NO_THREADS + #endif // _LIBCPP_ATOMIC diff --git a/libcxx/include/condition_variable b/libcxx/include/condition_variable index dc67266a97b..1af2484abd7 100644 --- a/libcxx/include/condition_variable +++ b/libcxx/include/condition_variable @@ -115,6 +115,8 @@ public: #pragma GCC system_header #endif +#ifndef _LIBCPP_HAS_NO_THREADS + _LIBCPP_BEGIN_NAMESPACE_STD class _LIBCPP_TYPE_VIS condition_variable_any @@ -253,4 +255,6 @@ void notify_all_at_thread_exit(condition_variable& cond, unique_lock<mutex> lk); _LIBCPP_END_NAMESPACE_STD +#endif // !_LIBCPP_HAS_NO_THREADS + #endif // _LIBCPP_CONDITION_VARIABLE diff --git a/libcxx/include/future b/libcxx/include/future index de00f25d7fb..7cd88cb726b 100644 --- a/libcxx/include/future +++ b/libcxx/include/future @@ -374,6 +374,10 @@ template <class R, class Alloc> struct uses_allocator<packaged_task<R>, Alloc>; #pragma GCC system_header #endif +#ifndef _LIBCPP_HAS_NO_THREADS +#error <future> is not supported on this single threaded system +#else // !_LIBCPP_HAS_NO_THREADS + _LIBCPP_BEGIN_NAMESPACE_STD //enum class future_errc @@ -2612,4 +2616,6 @@ future<void>::share() _LIBCPP_END_NAMESPACE_STD +#endif // !_LIBCPP_HAS_NO_THREADS + #endif // _LIBCPP_FUTURE diff --git a/libcxx/include/ios b/libcxx/include/ios index d95f18a5e1e..6d426079d4f 100644 --- a/libcxx/include/ios +++ b/libcxx/include/ios @@ -216,7 +216,7 @@ storage-class-specifier const error_category& iostream_category() noexcept; #include <__locale> #include <system_error> -#if __has_feature(cxx_atomic) +#if __has_feature(cxx_atomic) && !_LIBCPP_HAS_NO_THREADS #include <atomic> // for __xindex_ #endif @@ -367,7 +367,7 @@ private: int* __index_; size_t __event_size_; size_t __event_cap_; -#if __has_feature(cxx_atomic) +#if __has_feature(cxx_atomic) && !_LIBCPP_HAS_NO_THREADS static atomic<int> __xindex_; #else static int __xindex_; diff --git a/libcxx/include/memory b/libcxx/include/memory index dc9aeba7a7e..a9256da65e8 100644 --- a/libcxx/include/memory +++ b/libcxx/include/memory @@ -610,7 +610,7 @@ void* align(size_t alignment, size_t size, void*& ptr, size_t& space); #include <cassert> #endif -#if __has_feature(cxx_atomic) +#if __has_feature(cxx_atomic) && !defined(_LIBCPP_HAS_NO_THREADS) # include <atomic> #endif @@ -5262,7 +5262,7 @@ inline _LIBCPP_INLINE_VISIBILITY basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, shared_ptr<_Yp> const& __p); -#if __has_feature(cxx_atomic) +#if __has_feature(cxx_atomic) && !defined(_LIBCPP_HAS_NO_THREADS) class _LIBCPP_TYPE_VIS __sp_mut { @@ -5388,7 +5388,7 @@ atomic_compare_exchange_weak_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v return atomic_compare_exchange_weak(__p, __v, __w); } -#endif // __has_feature(cxx_atomic) +#endif // __has_feature(cxx_atomic) && !defined(_LIBCPP_HAS_NO_THREADS) //enum class struct _LIBCPP_TYPE_VIS pointer_safety diff --git a/libcxx/include/mutex b/libcxx/include/mutex index 5dfba6325b3..9c26356590d 100644 --- a/libcxx/include/mutex +++ b/libcxx/include/mutex @@ -187,6 +187,8 @@ template<class Callable, class ...Args> _LIBCPP_BEGIN_NAMESPACE_STD +#ifndef _LIBCPP_HAS_NO_THREADS + class _LIBCPP_TYPE_VIS recursive_mutex { pthread_mutex_t __m_; @@ -425,6 +427,8 @@ lock(_L0& __l0, _L1& __l1, _L2& __l2, _L3& ...__l3) #endif // _LIBCPP_HAS_NO_VARIADICS +#endif // !_LIBCPP_HAS_NO_THREADS + struct _LIBCPP_TYPE_VIS_ONLY once_flag; #ifndef _LIBCPP_HAS_NO_VARIADICS diff --git a/libcxx/include/shared_mutex b/libcxx/include/shared_mutex index 00f816dc4a0..9b7f0bf7735 100644 --- a/libcxx/include/shared_mutex +++ b/libcxx/include/shared_mutex @@ -112,6 +112,10 @@ template <class Mutex> #pragma GCC system_header #endif +#ifdef _LIBCPP_HAS_NO_THREADS +#error <shared_mutex> is not supported on this single threaded system +#else // !_LIBCPP_HAS_NO_THREADS + _LIBCPP_BEGIN_NAMESPACE_STD class _LIBCPP_TYPE_VIS shared_timed_mutex @@ -414,6 +418,8 @@ swap(shared_lock<_Mutex>& __x, shared_lock<_Mutex>& __y) _NOEXCEPT _LIBCPP_END_NAMESPACE_STD +#endif // !_LIBCPP_HAS_NO_THREADS + #endif // _LIBCPP_STD_VER > 11 #endif // _LIBCPP_SHARED_MUTEX diff --git a/libcxx/include/thread b/libcxx/include/thread index 1f1e4a2b945..808d76b82a0 100644 --- a/libcxx/include/thread +++ b/libcxx/include/thread @@ -106,6 +106,10 @@ void sleep_for(const chrono::duration<Rep, Period>& rel_time); #define __STDCPP_THREADS__ __cplusplus +#ifdef _LIBCPP_HAS_NO_THREADS +#error <thread> is not supported on this single threaded system +#else // !_LIBCPP_HAS_NO_THREADS + _LIBCPP_BEGIN_NAMESPACE_STD template <class _Tp> @@ -455,4 +459,6 @@ void yield() _NOEXCEPT {sched_yield();} _LIBCPP_END_NAMESPACE_STD +#endif // !_LIBCPP_HAS_NO_THREADS + #endif // _LIBCPP_THREAD |

