<pre style='margin:0'>
Christopher Nielsen (mascguy) pushed a commit to branch master
in repository macports-legacy-support.
</pre>
<p><a href="https://github.com/macports/macports-legacy-support/commit/cb9c705efdb3723f56b621c14a17e8159c1bc43f">https://github.com/macports/macports-legacy-support/commit/cb9c705efdb3723f56b621c14a17e8159c1bc43f</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit cb9c705efdb3723f56b621c14a17e8159c1bc43f
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Fri Feb 21 23:40:19 2025 -0800
<span style='display:block; white-space:pre;color:#404040;'> Add "continuous" mach_time functions and derivatives.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> This adds the "continuous" versions of the mach_time functions as
</span><span style='display:block; white-space:pre;color:#404040;'> simple wrappers around the non-continuous versions, i.e., not actually
</span><span style='display:block; white-space:pre;color:#404040;'> accounting for sleep time. The clock_gettime[_nsec_np]() functions
</span><span style='display:block; white-space:pre;color:#404040;'> are adjusted to make use of them.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> See: https://trac.macports.org/ticket/68007
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> TESTED:
</span><span style='display:block; white-space:pre;color:#404040;'> Passes new clock test on all platforms.
</span>---
include/MacportsLegacySupport.h | 6 +++++-
include/mach/mach_time.h | 15 ++++++++++----
src/time.c | 44 +++++++++++++++++++++++++++++++++++------
3 files changed, 54 insertions(+), 11 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/include/MacportsLegacySupport.h b/include/MacportsLegacySupport.h
</span><span style='display:block; white-space:pre;color:#808080;'>index 0090fc2..d745982 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/include/MacportsLegacySupport.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/include/MacportsLegacySupport.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -157,7 +157,11 @@
</span> #define __MPLS_SDK_SUPPORT_APPROX_TIME__ (__MPLS_SDK_MAJOR < 101000)
#define __MPLS_LIB_SUPPORT_APPROX_TIME__ (__MPLS_TARGET_OSVER < 101000)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-/* clock_gettime */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* mach_continuous_time */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MPLS_SDK_SUPPORT_CONTINUOUS_TIME__ (__MPLS_SDK_MAJOR < 101200)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MPLS_LIB_SUPPORT_CONTINUOUS_TIME__ (__MPLS_TARGET_OSVER < 101200)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* clock_gettime, clock_gettime_nsec_np */
</span> #define __MPLS_SDK_SUPPORT_GETTIME__ (__MPLS_SDK_MAJOR < 101200)
#define __MPLS_LIB_SUPPORT_GETTIME__ (__MPLS_TARGET_OSVER < 101200)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/include/mach/mach_time.h b/include/mach/mach_time.h
</span><span style='display:block; white-space:pre;color:#808080;'>index 2691470..cb06e36 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/include/mach/mach_time.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/include/mach/mach_time.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -26,14 +26,21 @@
</span> /* Include the primary system mach/mach_time.h */
#include_next <mach/mach_time.h>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#if __MPLS_SDK_SUPPORT_APPROX_TIME__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> __MP__BEGIN_DECLS
<span style='display:block; white-space:pre;background:#ffe0e0;'>-uint64_t mach_approximate_time(void);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if __MPLS_SDK_SUPPORT_APPROX_TIME__
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-__MP__END_DECLS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+uint64_t mach_approximate_time(void);
</span>
#endif /* __MPLS_SDK_SUPPORT_APPROX_TIME__ */
<span style='display:block; white-space:pre;background:#e0ffe0;'>+#if __MPLS_SDK_SUPPORT_CONTINUOUS_TIME__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+uint64_t mach_continuous_time(void);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+uint64_t mach_continuous_approximate_time(void);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* __MPLS_SDK_SUPPORT_CONTINUOUS_TIME__ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+__MP__END_DECLS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> #endif /* _MACPORTS_MACH_TIME_H_ */
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/time.c b/src/time.c
</span><span style='display:block; white-space:pre;color:#808080;'>index 712a9a9..78437b4 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/time.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/time.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -37,6 +37,30 @@ uint64_t mach_approximate_time(void)
</span>
#endif /* __MPLS_LIB_SUPPORT_APPROX_TIME__ */
<span style='display:block; white-space:pre;background:#e0ffe0;'>+#if __MPLS_LIB_SUPPORT_CONTINUOUS_TIME__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <mach/mach_time.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Here we provide versions of mach_continuous_time() which are just wrappers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * around the non-continuous versions. This isn't strictly functionally
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * correct, but permits programs to build and run (correctly if they don't
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * care about sleep time). A later version may add proper accounting for
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * sleep time, if some means can be found to obtain it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+uint64_t mach_continuous_time(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return mach_absolute_time();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+uint64_t mach_continuous_approximate_time(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return mach_approximate_time();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* __MPLS_LIB_SUPPORT_CONTINUOUS_TIME__ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> #if __MPLS_LIB_SUPPORT_GETTIME__
#include <errno.h>
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -380,14 +404,18 @@ clock_gettime_nsec_np(clockid_t clk_id)
</span> return (ut.seconds + st.seconds) * BILLION64
+ (ut.microseconds + st.microseconds) * 1000;
<span style='display:block; white-space:pre;background:#ffe0e0;'>- /* For now these are both the same, matching CLOCK_UPTIME_RAW */
</span> case CLOCK_MONOTONIC_RAW:
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ mach_time = mach_continuous_time();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case CLOCK_MONOTONIC_RAW_APPROX:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mach_time = mach_continuous_approximate_time();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> case CLOCK_UPTIME_RAW:
mach_time = mach_absolute_time();
break;
<span style='display:block; white-space:pre;background:#ffe0e0;'>- /* For now these are both the same, matching CLOCK_UPTIME_RAW_APPROX */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case CLOCK_MONOTONIC_RAW_APPROX:
</span> case CLOCK_UPTIME_RAW_APPROX:
mach_time = mach_approximate_time();
break;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -442,14 +470,18 @@ clock_gettime(clockid_t clk_id, struct timespec *ts)
</span> }
return ret;
<span style='display:block; white-space:pre;background:#ffe0e0;'>- /* For now these are both the same, matching CLOCK_UPTIME_RAW */
</span> case CLOCK_MONOTONIC_RAW:
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ mach_time = mach_continuous_time();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case CLOCK_MONOTONIC_RAW_APPROX:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mach_time = mach_continuous_approximate_time();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> case CLOCK_UPTIME_RAW:
mach_time = mach_absolute_time();
break;
<span style='display:block; white-space:pre;background:#ffe0e0;'>- /* For now these are both the same, matching CLOCK_UPTIME_RAW_APPROX */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case CLOCK_MONOTONIC_RAW_APPROX:
</span> case CLOCK_UPTIME_RAW_APPROX:
mach_time = mach_approximate_time();
break;
</pre><pre style='margin:0'>
</pre>