diff --git a/include/__mutex_base b/include/__mutex_base index 554ec3f16..d3b2a1be6 100644 --- a/include/__mutex_base +++ b/include/__mutex_base @@ -382,11 +382,11 @@ condition_variable::wait_for(unique_lock& __lk, const chrono::duration<_Rep, _Period>& __d) { using namespace chrono; - system_clock::time_point __s_now = system_clock::now(); - monotonic_clock::time_point __c_now = monotonic_clock::now(); + system_clock::time_point __s_now = system_clock::now(); + steady_clock::time_point __c_now = steady_clock::now(); __do_timed_wait(__lk, __s_now + __ceil(__d)); - return monotonic_clock::now() - __c_now < __d ? cv_status::no_timeout : - cv_status::timeout; + return steady_clock::now() - __c_now < __d ? cv_status::no_timeout : + cv_status::timeout; } template @@ -396,7 +396,7 @@ condition_variable::wait_for(unique_lock& __lk, const chrono::duration<_Rep, _Period>& __d, _Predicate __pred) { - return wait_until(__lk, chrono::monotonic_clock::now() + __d, + return wait_until(__lk, chrono::steady_clock::now() + __d, _STD::move(__pred)); } diff --git a/include/chrono b/include/chrono index d41b88f1e..97b0c816d 100644 --- a/include/chrono +++ b/include/chrono @@ -223,26 +223,26 @@ public: typedef duration::rep rep; typedef duration::period period; typedef chrono::time_point time_point; - static const bool is_monotonic = false; + static const bool is_steady = false; static time_point now(); static time_t to_time_t (const time_point& __t); static time_point from_time_t(time_t __t); }; -class monotonic_clock +class steady_clock { public: typedef nanoseconds duration; typedef duration::rep rep; typedef duration::period period; - typedef chrono::time_point time_point; - static const bool is_monotonic = true; + typedef chrono::time_point time_point; + static const bool is_steady = true; static time_point now(); }; -typedef monotonic_clock high_resolution_clock; +typedef steady_clock high_resolution_clock; } // chrono @@ -843,26 +843,26 @@ public: typedef duration::rep rep; typedef duration::period period; typedef chrono::time_point time_point; - static const bool is_monotonic = false; + static const bool is_steady = false; static time_point now(); static time_t to_time_t (const time_point& __t); static time_point from_time_t(time_t __t); }; -class _LIBCPP_VISIBLE monotonic_clock +class _LIBCPP_VISIBLE steady_clock { public: typedef nanoseconds duration; typedef duration::rep rep; typedef duration::period period; - typedef chrono::time_point time_point; - static const bool is_monotonic = true; + typedef chrono::time_point time_point; + static const bool is_steady = true; static time_point now(); }; -typedef monotonic_clock high_resolution_clock; +typedef steady_clock high_resolution_clock; } // chrono diff --git a/include/condition_variable b/include/condition_variable index 682fb4582..124d3880b 100644 --- a/include/condition_variable +++ b/include/condition_variable @@ -232,7 +232,7 @@ cv_status condition_variable_any::wait_for(_Lock& __lock, const chrono::duration<_Rep, _Period>& __d) { - return wait_until(__lock, chrono::monotonic_clock::now() + __d); + return wait_until(__lock, chrono::steady_clock::now() + __d); } template @@ -242,7 +242,7 @@ condition_variable_any::wait_for(_Lock& __lock, const chrono::duration<_Rep, _Period>& __d, _Predicate __pred) { - return wait_until(__lock, chrono::monotonic_clock::now() + __d, + return wait_until(__lock, chrono::steady_clock::now() + __d, _STD::move(__pred)); } diff --git a/include/future b/include/future index 55b0ead8f..be975f488 100644 --- a/include/future +++ b/include/future @@ -603,7 +603,7 @@ inline _LIBCPP_INLINE_VISIBILITY future_status __assoc_sub_state::wait_for(const chrono::duration<_Rep, _Period>& __rel_time) const { - return wait_until(chrono::monotonic_clock::now() + __rel_time); + return wait_until(chrono::steady_clock::now() + __rel_time); } template diff --git a/include/mutex b/include/mutex index 45ce66969..c87d0fdae 100644 --- a/include/mutex +++ b/include/mutex @@ -221,7 +221,7 @@ public: template _LIBCPP_INLINE_VISIBILITY bool try_lock_for(const chrono::duration<_Rep, _Period>& __d) - {return try_lock_until(chrono::monotonic_clock::now() + __d);} + {return try_lock_until(chrono::steady_clock::now() + __d);} template bool try_lock_until(const chrono::time_point<_Clock, _Duration>& __t); void unlock(); @@ -264,7 +264,7 @@ public: template _LIBCPP_INLINE_VISIBILITY bool try_lock_for(const chrono::duration<_Rep, _Period>& __d) - {return try_lock_until(chrono::monotonic_clock::now() + __d);} + {return try_lock_until(chrono::steady_clock::now() + __d);} template bool try_lock_until(const chrono::time_point<_Clock, _Duration>& __t); void unlock(); diff --git a/include/thread b/include/thread index fe671b256..abb56f4cb 100644 --- a/include/thread +++ b/include/thread @@ -406,10 +406,10 @@ sleep_until(const chrono::time_point<_Clock, _Duration>& __t) template inline _LIBCPP_INLINE_VISIBILITY void -sleep_until(const chrono::time_point& __t) +sleep_until(const chrono::time_point& __t) { using namespace chrono; - sleep_for(__t - monotonic_clock::now()); + sleep_for(__t - steady_clock::now()); } inline _LIBCPP_INLINE_VISIBILITY diff --git a/src/chrono.cpp b/src/chrono.cpp index fe3c3f603..c3714208b 100644 --- a/src/chrono.cpp +++ b/src/chrono.cpp @@ -44,7 +44,7 @@ system_clock::from_time_t(time_t t) return system_clock::time_point(seconds(t)); } -// monotonic_clock +// steady_clock #if __APPLE__ // mach_absolute_time() * MachInfo.numer / MachInfo.denom is the number of @@ -58,15 +58,15 @@ system_clock::from_time_t(time_t t) #pragma GCC visibility push(hidden) static -monotonic_clock::rep -monotonic_simplified() +steady_clock::rep +steady_simplified() { return mach_absolute_time(); } static double -compute_monotonic_factor() +compute_steady_factor() { mach_timebase_info_data_t MachInfo; mach_timebase_info(&MachInfo); @@ -74,32 +74,32 @@ compute_monotonic_factor() } static -monotonic_clock::rep -monotonic_full() +steady_clock::rep +steady_full() { - static const double factor = compute_monotonic_factor(); - return static_cast(mach_absolute_time() * factor); + static const double factor = compute_steady_factor(); + return static_cast(mach_absolute_time() * factor); } -typedef monotonic_clock::rep (*FP)(); +typedef steady_clock::rep (*FP)(); static FP -init_monotonic_clock() +init_steady_clock() { mach_timebase_info_data_t MachInfo; mach_timebase_info(&MachInfo); if (MachInfo.numer == MachInfo.denom) - return &monotonic_simplified; - return &monotonic_full; + return &steady_simplified; + return &steady_full; } #pragma GCC visibility pop -monotonic_clock::time_point -monotonic_clock::now() +steady_clock::time_point +steady_clock::now() { - static FP fp = init_monotonic_clock(); + static FP fp = init_steady_clock(); return time_point(duration(fp())); } @@ -109,12 +109,12 @@ monotonic_clock::now() // _POSIX_MONOTONIC_CLOCK and fall back to something else if those // don't exist. -// Warning: If this is not truly monotonic, then it is non-conforming. It is +// Warning: If this is not truly steady, then it is non-conforming. It is // better for it to not exist and have the rest of libc++ use system_clock // instead. -monotonic_clock::time_point -monotonic_clock::now() +steady_clock::time_point +steady_clock::now() { struct timespec tp; if (0 != clock_gettime(CLOCK_MONOTONIC, &tp)) diff --git a/test/thread/thread.condition/thread.condition.condvar/wait_until.pass.cpp b/test/thread/thread.condition/thread.condition.condvar/wait_until.pass.cpp index 12524c2e1..2fa6345ef 100644 --- a/test/thread/thread.condition/thread.condition.condvar/wait_until.pass.cpp +++ b/test/thread/thread.condition/thread.condition.condvar/wait_until.pass.cpp @@ -28,13 +28,13 @@ struct Clock typedef duration::rep rep; typedef duration::period period; typedef std::chrono::time_point time_point; - static const bool is_monotonic = true; + static const bool is_steady = true; static time_point now() { using namespace std::chrono; return time_point(duration_cast( - monotonic_clock::now().time_since_epoch() + steady_clock::now().time_since_epoch() )); } }; diff --git a/test/thread/thread.condition/thread.condition.condvar/wait_until_pred.pass.cpp b/test/thread/thread.condition/thread.condition.condvar/wait_until_pred.pass.cpp index 070087c37..c9efb8d9c 100644 --- a/test/thread/thread.condition/thread.condition.condvar/wait_until_pred.pass.cpp +++ b/test/thread/thread.condition/thread.condition.condvar/wait_until_pred.pass.cpp @@ -29,13 +29,13 @@ struct Clock typedef duration::rep rep; typedef duration::period period; typedef std::chrono::time_point time_point; - static const bool is_monotonic = true; + static const bool is_steady = true; static time_point now() { using namespace std::chrono; return time_point(duration_cast( - monotonic_clock::now().time_since_epoch() + steady_clock::now().time_since_epoch() )); } }; diff --git a/test/thread/thread.condition/thread.condition.condvarany/wait_until.pass.cpp b/test/thread/thread.condition/thread.condition.condvarany/wait_until.pass.cpp index 051447966..7b21660c1 100644 --- a/test/thread/thread.condition/thread.condition.condvarany/wait_until.pass.cpp +++ b/test/thread/thread.condition/thread.condition.condvarany/wait_until.pass.cpp @@ -27,13 +27,13 @@ struct Clock typedef duration::rep rep; typedef duration::period period; typedef std::chrono::time_point time_point; - static const bool is_monotonic = true; + static const bool is_steady = true; static time_point now() { using namespace std::chrono; return time_point(duration_cast( - monotonic_clock::now().time_since_epoch() + steady_clock::now().time_since_epoch() )); } }; diff --git a/test/thread/thread.condition/thread.condition.condvarany/wait_until_pred.pass.cpp b/test/thread/thread.condition/thread.condition.condvarany/wait_until_pred.pass.cpp index 8b025a2ef..7c3493198 100644 --- a/test/thread/thread.condition/thread.condition.condvarany/wait_until_pred.pass.cpp +++ b/test/thread/thread.condition/thread.condition.condvarany/wait_until_pred.pass.cpp @@ -29,13 +29,13 @@ struct Clock typedef duration::rep rep; typedef duration::period period; typedef std::chrono::time_point time_point; - static const bool is_monotonic = true; + static const bool is_steady = true; static time_point now() { using namespace std::chrono; return time_point(duration_cast( - monotonic_clock::now().time_since_epoch() + steady_clock::now().time_since_epoch() )); } }; diff --git a/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_duration.pass.cpp b/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_duration.pass.cpp index 7bf374706..137c913e2 100644 --- a/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_duration.pass.cpp +++ b/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_duration.pass.cpp @@ -21,7 +21,7 @@ std::timed_mutex m; -typedef std::chrono::monotonic_clock Clock; +typedef std::chrono::steady_clock Clock; typedef Clock::time_point time_point; typedef Clock::duration duration; typedef std::chrono::milliseconds ms; diff --git a/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_time_point.pass.cpp b/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_time_point.pass.cpp index 0bdfc565e..21ee88d79 100644 --- a/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_time_point.pass.cpp +++ b/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_time_point.pass.cpp @@ -21,7 +21,7 @@ std::timed_mutex m; -typedef std::chrono::monotonic_clock Clock; +typedef std::chrono::steady_clock Clock; typedef Clock::time_point time_point; typedef Clock::duration duration; typedef std::chrono::milliseconds ms; diff --git a/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock_until.pass.cpp b/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock_until.pass.cpp index b8c25d688..2b435e06f 100644 --- a/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock_until.pass.cpp +++ b/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock_until.pass.cpp @@ -36,7 +36,7 @@ mutex m; int main() { - typedef std::chrono::monotonic_clock Clock; + typedef std::chrono::steady_clock Clock; std::unique_lock lk(m, std::defer_lock); assert(lk.try_lock_until(Clock::now()) == true); assert(try_lock_until_called == true); diff --git a/test/thread/thread.mutex/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_for.pass.cpp b/test/thread/thread.mutex/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_for.pass.cpp index 3cd0775c9..1253659e2 100644 --- a/test/thread/thread.mutex/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_for.pass.cpp +++ b/test/thread/thread.mutex/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_for.pass.cpp @@ -21,7 +21,7 @@ std::timed_mutex m; -typedef std::chrono::monotonic_clock Clock; +typedef std::chrono::steady_clock Clock; typedef Clock::time_point time_point; typedef Clock::duration duration; typedef std::chrono::milliseconds ms; diff --git a/test/thread/thread.mutex/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_until.pass.cpp b/test/thread/thread.mutex/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_until.pass.cpp index 147fae16d..ac70d4a98 100644 --- a/test/thread/thread.mutex/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_until.pass.cpp +++ b/test/thread/thread.mutex/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_until.pass.cpp @@ -21,7 +21,7 @@ std::timed_mutex m; -typedef std::chrono::monotonic_clock Clock; +typedef std::chrono::steady_clock Clock; typedef Clock::time_point time_point; typedef Clock::duration duration; typedef std::chrono::milliseconds ms; diff --git a/test/thread/thread.mutex/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_for.pass.cpp b/test/thread/thread.mutex/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_for.pass.cpp index 7214a244a..972fc637f 100644 --- a/test/thread/thread.mutex/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_for.pass.cpp +++ b/test/thread/thread.mutex/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_for.pass.cpp @@ -21,7 +21,7 @@ std::recursive_timed_mutex m; -typedef std::chrono::monotonic_clock Clock; +typedef std::chrono::steady_clock Clock; typedef Clock::time_point time_point; typedef Clock::duration duration; typedef std::chrono::milliseconds ms; diff --git a/test/thread/thread.mutex/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_until.pass.cpp b/test/thread/thread.mutex/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_until.pass.cpp index aa66c7772..bfda9edce 100644 --- a/test/thread/thread.mutex/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_until.pass.cpp +++ b/test/thread/thread.mutex/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_until.pass.cpp @@ -21,7 +21,7 @@ std::recursive_timed_mutex m; -typedef std::chrono::monotonic_clock Clock; +typedef std::chrono::steady_clock Clock; typedef Clock::time_point time_point; typedef Clock::duration duration; typedef std::chrono::milliseconds ms; diff --git a/test/utilities/time/clock.h b/test/utilities/time/clock.h index 8490188ac..ec99f26dd 100644 --- a/test/utilities/time/clock.h +++ b/test/utilities/time/clock.h @@ -9,7 +9,7 @@ class Clock typedef duration::rep rep; typedef duration::period period; typedef std::chrono::time_point time_point; - static const bool is_monotonic = false; + static const bool is_steady = false; static time_point now(); }; diff --git a/test/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp b/test/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp index cd7067ddd..e761c96e4 100644 --- a/test/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp +++ b/test/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp @@ -21,5 +21,5 @@ int main() static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); - static_assert(C::is_monotonic || !C::is_monotonic, ""); + static_assert(C::is_steady || !C::is_steady, ""); } diff --git a/test/utilities/time/time.clock/time.clock.monotonic/consistency.pass.cpp b/test/utilities/time/time.clock/time.clock.monotonic/consistency.pass.cpp index 66d81cd5d..a325fa245 100644 --- a/test/utilities/time/time.clock/time.clock.monotonic/consistency.pass.cpp +++ b/test/utilities/time/time.clock/time.clock.monotonic/consistency.pass.cpp @@ -9,7 +9,7 @@ // -// monotonic_clock +// steady_clock // check clock invariants @@ -17,9 +17,9 @@ int main() { - typedef std::chrono::monotonic_clock C; + typedef std::chrono::steady_clock C; static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); - static_assert(C::is_monotonic, ""); + static_assert(C::is_steady, ""); } diff --git a/test/utilities/time/time.clock/time.clock.monotonic/now.pass.cpp b/test/utilities/time/time.clock/time.clock.monotonic/now.pass.cpp index 6d3b2d06f..0c6ebe6f3 100644 --- a/test/utilities/time/time.clock/time.clock.monotonic/now.pass.cpp +++ b/test/utilities/time/time.clock/time.clock.monotonic/now.pass.cpp @@ -9,7 +9,7 @@ // -// monotonic_clock +// steady_clock // static time_point now(); @@ -18,7 +18,7 @@ int main() { - typedef std::chrono::monotonic_clock C; + typedef std::chrono::steady_clock C; C::time_point t1 = C::now(); C::time_point t2 = C::now(); assert(t2 >= t1); diff --git a/test/utilities/time/time.clock/time.clock.system/consistency.pass.cpp b/test/utilities/time/time.clock/time.clock.system/consistency.pass.cpp index f804fc28c..5029b55b1 100644 --- a/test/utilities/time/time.clock/time.clock.system/consistency.pass.cpp +++ b/test/utilities/time/time.clock/time.clock.system/consistency.pass.cpp @@ -22,5 +22,5 @@ int main() static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); - static_assert((C::is_monotonic || !C::is_monotonic), ""); + static_assert((C::is_steady || !C::is_steady), ""); }