[libcxx-commits] [PATCH] D93542: [SystemZ][ZOS] Provide CLOCK_MONOTONIC alternative
Zbigniew Sarbinowski via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Fri Dec 18 07:23:51 PST 2020
zibi created this revision.
zibi added a project: libc++.
zibi requested review of this revision.
Herald added a subscriber: libcxx-commits.
Herald added a reviewer: libc++.
We need CLOCK_MONOTONIC equivalent implementation for z/OS within libc++. The default implementation is asserting.
On z/OS the lack of 'clock_gettime()' and 'time_point()' force us to look for alternatives.
The current proposal is to use `gettimeofday()` for CLOCK_MONOTONIC which is also used in CLOCK_REALTIME. This will allow us to skip the assertion with compromised CLOCK_MONOTONIC implementation which will not guarantee to never go back in time because it will use `gettimeofday()` but only when it's set.
Is this a good compromise for platforms which does not support monotonic clock?
Hopefully this will spark the discussion and agreement how to proceed in this situation.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D93542
Files:
libcxx/src/chrono.cpp
Index: libcxx/src/chrono.cpp
===================================================================
--- libcxx/src/chrono.cpp
+++ libcxx/src/chrono.cpp
@@ -156,6 +156,15 @@
return steady_clock::time_point(steady_clock::duration(counter.QuadPart * nano::den / freq.QuadPart));
}
+#elif defined(__MVS__)
+
+static steady_clock::time_point __libcpp_steady_clock_now() {
+ timeval tv;
+ gettimeofday(&tv, 0);
+ return steady_clock::time_point(seconds(tv.tv_sec) +
+ nanoseconds(tv.tv_usec * 1000));
+}
+
#elif defined(CLOCK_MONOTONIC)
static steady_clock::time_point __libcpp_steady_clock_now() {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D93542.312787.patch
Type: text/x-patch
Size: 636 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20201218/90d7d649/attachment.bin>
More information about the libcxx-commits
mailing list