From: Lucian Petrut Date: Thu, 16 Mar 2023 14:25:50 +0000 (+0000) Subject: common: avoid redefining clock type on Windows X-Git-Tag: v18.1.0~229^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=620590a51687f0d68cea8012b7bfd30bbd386f9e;p=ceph.git common: avoid redefining clock type on Windows mingw >= 8.0.1 defines CLOCK_REALTIME_COARSE, so we'll avoid overriding it if already set. Clock precision [1]: mingw < 8.0.1: * CLOCK_REALTIME: ~10-55ms (GetSystemTimeAsFileTime) mingw >= 8.0.1: * CLOCK_REALTIME: <1us (GetSystemTimePreciseAsFileTime) * CLOCK_REALTIME_COARSE: ~10-55ms (GetSystemTimeAsFileTime) * CLOCK_MONOTONIC: <1us if TSC is usable, ~10-55ms otherwise (QueryPerformanceCounter) [1] https://github.com/mirror/mingw-w64/commit/dcd990ed423381cf35702df9495d44f1979ebe50 Signed-off-by: Lucian Petrut (cherry picked from commit 489fd858479a79de75f6327d5cca40c289b53f35) --- diff --git a/src/common/ceph_time.h b/src/common/ceph_time.h index 2d3d1fda010e5..292fa91ac24b5 100644 --- a/src/common/ceph_time.h +++ b/src/common/ceph_time.h @@ -34,9 +34,22 @@ int clock_gettime(int clk_id, struct timespec *tp); #endif #ifdef _WIN32 -#define CLOCK_REALTIME_COARSE CLOCK_REALTIME -#define CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC -// MINGW uses the QueryPerformanceCounter API behind the scenes. +// Clock precision: +// mingw < 8.0.1: +// * CLOCK_REALTIME: ~10-55ms (GetSystemTimeAsFileTime) +// mingw >= 8.0.1: +// * CLOCK_REALTIME: <1us (GetSystemTimePreciseAsFileTime) +// * CLOCK_REALTIME_COARSE: ~10-55ms (GetSystemTimeAsFileTime) +// +// * CLOCK_MONOTONIC: <1us if TSC is usable, ~10-55ms otherwise +// (QueryPerformanceCounter) +// https://github.com/mirror/mingw-w64/commit/dcd990ed423381cf35702df9495d44f1979ebe50 +#ifndef CLOCK_REALTIME_COARSE + #define CLOCK_REALTIME_COARSE CLOCK_REALTIME +#endif +#ifndef CLOCK_MONOTONIC_COARSE + #define CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC +#endif #endif struct ceph_timespec;