1 | #pragma once |
2 | /** Allows to build on MacOS X |
3 | * |
4 | * Highly experimental, not recommended, disabled by default. |
5 | * |
6 | * To use, include this file with -include compiler parameter. |
7 | */ |
8 | |
9 | #include <time.h> |
10 | |
11 | #ifdef __APPLE__ |
12 | |
13 | # if !defined(APPLE_HAVE_CLOCK_GETTIME) |
14 | # include <AvailabilityMacros.h> |
15 | # if !defined(MAC_OS_X_VERSION_10_12) |
16 | # define MAC_OS_X_VERSION_10_12 101200 |
17 | # endif |
18 | # define APPLE_HAVE_CLOCK_GETTIME MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12 |
19 | # endif |
20 | |
21 | # if !APPLE_HAVE_CLOCK_GETTIME || !defined(CLOCK_MONOTONIC) |
22 | /** |
23 | * MacOS X doesn't support different clock sources |
24 | * |
25 | * Mapping all of them to 0, except for |
26 | * CLOCK_THREAD_CPUTIME_ID, because there is a way |
27 | * to implement it using in-kernel stats about threads |
28 | */ |
29 | # if !defined(CLOCK_MONOTONIC) |
30 | # define CLOCK_MONOTONIC 0 |
31 | # endif |
32 | # if !defined(CLOCK_REALTIME) |
33 | # define CLOCK_REALTIME CLOCK_MONOTONIC |
34 | # endif |
35 | # if !defined(CLOCK_THREAD_CPUTIME_ID) |
36 | # define CLOCK_THREAD_CPUTIME_ID 3 |
37 | # endif |
38 | |
39 | typedef int clockid_t; |
40 | int clock_gettime(int clk_id, struct timespec* t); |
41 | # else |
42 | |
43 | # endif |
44 | |
45 | # if !defined(CLOCK_MONOTONIC_COARSE) |
46 | # define CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC |
47 | # endif |
48 | |
49 | #endif |
50 | |