_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationI[lx]St5ratioIL[lx]1EL[lx]1000000000EEEE;
_ZNSt8__detail11__wait_args22_M_load_proxy_wait_valEPKv;
+ # std::chrono::gps_clock::now, tai_clock::now
+ _ZNSt6chrono9gps_clock3nowEv;
+ _ZNSt6chrono9tai_clock3nowEv;
+
# __gnu_debug::_Safe_iterator_base and _Safe_sequence_base const
_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb;
_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
+// [time]
+
/** @file include/chrono
* This is a Standard C++ Library header.
* @ingroup chrono
# include <bits/c++0x_warning.h>
#else
+#define __glibcxx_want_chrono
+#define __glibcxx_want_chrono_udls
+#include <bits/version.h>
+
#include <bits/chrono.h>
-#if __cplusplus >= 202002L
+#if __cpp_lib_bitops >= 201907L
# include <bit> // __countr_zero
#endif
-#if __cplusplus >= 202002L && _GLIBCXX_HOSTED
+#if __cpp_lib_chrono >= 201803L && _GLIBCXX_HOSTED
# include <sstream>
# include <string>
# include <vector>
# include <bits/unique_ptr.h>
#endif
-#define __glibcxx_want_chrono
-#define __glibcxx_want_chrono_udls
-#include <bits/version.h>
-
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
*/
namespace chrono
{
-#if __cplusplus >= 202002L
+#if __cpp_lib_chrono >= 201803L
/// @addtogroup chrono
/// @{
struct local_t { };
using period = system_clock::period;
using duration = chrono::duration<rep, period>;
using time_point = chrono::time_point<tai_clock>;
- static constexpr bool is_steady = false; // XXX true for CLOCK_TAI?
+ static constexpr bool is_steady = false;
- // TODO move into lib, use CLOCK_TAI on linux, add extension point.
[[nodiscard]]
static time_point
- now()
- { return from_utc(utc_clock::now()); }
+ now(); // in src/c++20/clock.cc
template<typename _Duration>
[[nodiscard]]
using period = system_clock::period;
using duration = chrono::duration<rep, period>;
using time_point = chrono::time_point<gps_clock>;
- static constexpr bool is_steady = false; // XXX
+ static constexpr bool is_steady = false;
- // TODO move into lib, add extension point.
[[nodiscard]]
static time_point
- now()
- { return from_utc(utc_clock::now()); }
+ now(); // in src/c++20/clock.cc
template<typename _Duration>
[[nodiscard]]
#endif // C++20
} // namespace chrono
-#if __cplusplus >= 202002L
+#if __cpp_lib_chrono >= 201803L
inline namespace literals
{
inline namespace chrono_literals
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
-#if __cplusplus >= 202002L && _GLIBCXX_HOSTED
+#if __cpp_lib_chrono >= 201803L && _GLIBCXX_HOSTED
# include <bits/chrono_io.h>
#endif
inst_sources =
endif
-sources = tzdb.cc format.cc atomic.cc
+sources = tzdb.cc format.cc atomic.cc clock.cc
vpath % $(top_srcdir)/src/c++20
CONFIG_CLEAN_VPATH_FILES =
LTLIBRARIES = $(noinst_LTLIBRARIES)
libc__20convenience_la_LIBADD =
-am__objects_1 = tzdb.lo format.lo atomic.lo
+am__objects_1 = tzdb.lo format.lo atomic.lo clock.lo
@ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_2 = sstream-inst.lo
@GLIBCXX_HOSTED_TRUE@am_libc__20convenience_la_OBJECTS = \
@GLIBCXX_HOSTED_TRUE@ $(am__objects_1) $(am__objects_2)
@ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources = \
@ENABLE_EXTERN_TEMPLATE_TRUE@ sstream-inst.cc
-sources = tzdb.cc format.cc atomic.cc
+sources = tzdb.cc format.cc atomic.cc clock.cc
@GLIBCXX_HOSTED_FALSE@libc__20convenience_la_SOURCES =
@GLIBCXX_HOSTED_TRUE@libc__20convenience_la_SOURCES = $(sources) $(inst_sources)
--- /dev/null
+// std::chrono::tai_clock, gps_clock
+
+// Copyright (C) 2021-2025 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882:2020
+// 27.7.4 [time.clock.tai], 27.7.5 [time.clock.gps]
+// P0355R7
+
+#include <chrono>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+namespace chrono
+{
+#if __cpp_lib_chrono >= 201803L && _GLIBCXX_HOSTED
+ // TODO use CLOCK_TAI on linux, add extension point.
+ time_point<tai_clock>
+ tai_clock::now()
+ { return from_utc(utc_clock::now()); }
+
+ // TODO add extension point.
+ time_point<gps_clock>
+ gps_clock::now()
+ { return from_utc(utc_clock::now()); }
+#endif
+}
+
+_GLIBCXX_END_NAMESPACE_VERSION
+}