--- third_party/perfetto/include/perfetto/base/time.h.orig 2024-07-31 14:19:23 UTC +++ third_party/perfetto/include/perfetto/base/time.h @@ -199,6 +199,9 @@ inline TimeNanos GetTimeInternalNs(clockid_t clk_id) { // Return ns from boot. Conversely to GetWallTimeNs, this clock counts also time // during suspend (when supported). inline TimeNanos GetBootTimeNs() { +#if defined(__FreeBSD__) + return GetTimeInternalNs(kWallTimeClockSource); +#else // Determine if CLOCK_BOOTTIME is available on the first call. static const clockid_t kBootTimeClockSource = [] { struct timespec ts = {}; @@ -206,6 +209,7 @@ inline TimeNanos GetBootTimeNs() { return res == 0 ? CLOCK_BOOTTIME : kWallTimeClockSource; }(); return GetTimeInternalNs(kBootTimeClockSource); +#endif } inline TimeNanos GetWallTimeNs() { @@ -213,7 +217,13 @@ inline TimeNanos GetWallTimeNs() { } inline TimeNanos GetWallTimeRawNs() { +#if defined(__OpenBSD__) + return GetTimeInternalNs(CLOCK_MONOTONIC); +#elif defined(__FreeBSD__) + return GetTimeInternalNs(CLOCK_MONOTONIC_FAST); +#else return GetTimeInternalNs(CLOCK_MONOTONIC_RAW); +#endif } inline TimeNanos GetThreadCPUTimeNs() {