<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/8a8fd45f62d7c0b06800d3e94898ed85b49f5d07">https://github.com/macports/macports-legacy-support/commit/8a8fd45f62d7c0b06800d3e94898ed85b49f5d07</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 8a8fd45f62d7c0b06800d3e94898ed85b49f5d07
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Sat Mar 1 13:31:48 2025 -0800
<span style='display:block; white-space:pre;color:#404040;'> test_packet: Include mach_continuous_time() capture.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> This is only used by a "secret" timestamp option that isn't
</span><span style='display:block; white-space:pre;color:#404040;'> straightforwardly available, and doesn't exist prior to the 10.14
</span><span style='display:block; white-space:pre;color:#404040;'> kernel.
</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;'> Continuous time is reported when appropriate.
</span>---
test/test_packet.c | 37 ++++++++++++++++++++++++++++++++++++-
1 file changed, 36 insertions(+), 1 deletion(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/test/test_packet.c b/test/test_packet.c
</span><span style='display:block; white-space:pre;color:#808080;'>index baa97df..7f8d148 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/test/test_packet.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/test/test_packet.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -41,6 +41,18 @@
</span> #define SYSCTL_OSVER_CLASS CTL_KERN
#define SYSCTL_OSVER_ITEM KERN_OSRELEASE
<span style='display:block; white-space:pre;background:#e0ffe0;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Temporary hack to avoid dependency on mach_continuous_time fallback
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * for successful build on <10.12. This function should never actually
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * be executed on <10.14, anyway.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This hack can be removed once the relevant time.c update is merged.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define mach_continuous_time mach_absolute_time
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> #define CMSG_DATALEN(cmsg) ((uint8_t *) (cmsg) + (cmsg)->cmsg_len \
- (uint8_t *) CMSG_DATA(cmsg))
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -55,6 +67,7 @@ typedef struct timeval timeval_t;
</span> TS_ONE(none,,0,NULL,0) \
TS_ONE(tv,struct timeval,sizeof(timeval_t),get_timeval_ts,0) \
TS_ONE(u64mach,uint64_t (mach),sizeof(uint64_t),get_mach_ts,11) \
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ TS_ONE(u64cont,uint64_t (mach cont),sizeof(uint64_t),get_mach_ts,18) \
</span>
#define TS_ONE(name,str,size,get,minver) ts_##name,
typedef enum ts_type {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -334,6 +347,12 @@ test_packet(int sockopt, socklen_t *cbuflen, times_t *tp, ts_type_t tstype)
</span> }
break;
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ case ts_u64cont:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!(tp->mt1 = mach_continuous_time())) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ err = "pre-send mach_continuous_time()";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> default: break;
}
if (err) break;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -353,6 +372,12 @@ test_packet(int sockopt, socklen_t *cbuflen, times_t *tp, ts_type_t tstype)
</span> }
break;
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ case ts_u64cont:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!(tp->mt2 = mach_continuous_time())) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ err = "post-recv mach_continuous_time()";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> default: break;
}
if (err) break;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -427,6 +452,12 @@ test_timestamp(const char *name, ts_type_t tstype, int sockopt, int scmtype,
</span> mach2ns(times.mt2 - times.mt1));
break;
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ case ts_u64cont:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf(" Mach continuous times (ns) %llu, %llu, diff = %llu\n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mach2ns(times.mt1), mach2ns(times.mt2),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mach2ns(times.mt2 - times.mt1));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> default: break;
}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -496,6 +527,10 @@ test_timestamp(const char *name, ts_type_t tstype, int sockopt, int scmtype,
</span> tslow = times.mt1; tshigh = times.mt2; tsvalns = mach2ns(tsval);
break;
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ case ts_u64cont:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tslow = times.mt1; tshigh = times.mt2; tsvalns = mach2ns(tsval);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> default:
tslow = 0; tshigh = ~0ULL; tsvalns = tsval;
break;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -539,7 +574,7 @@ main(int argc, char *argv[])
</span> #endif
/* The following is in macOS 10.14+ kernel sources, but not user headers. */
#ifdef SO_TIMESTAMP_CONTINUOUS
<span style='display:block; white-space:pre;background:#ffe0e0;'>- err |= test_timestamp("SO_TIMESTAMP_CONTINUOUS", ts_u64mach,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ err |= test_timestamp("SO_TIMESTAMP_CONTINUOUS", ts_u64cont,
</span> SO_TIMESTAMP_CONTINUOUS, SCM_TIMESTAMP_CONTINUOUS,
verbose);
#endif
</pre><pre style='margin:0'>
</pre>