<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>