|
33 | 33 |
|
34 | 34 | #define ZEND_HRTIME_PLATFORM_POSIX 0
|
35 | 35 | #define ZEND_HRTIME_PLATFORM_WINDOWS 0
|
36 |
| -#define ZEND_HRTIME_PLATFORM_APPLE 0 |
| 36 | +#define ZEND_HRTIME_PLATFORM_APPLE_MACH_ABSOLUTE 0 |
| 37 | +#define ZEND_HRTIME_PLATFORM_APPLE_GETTIME_NSEC 0 |
37 | 38 | #define ZEND_HRTIME_PLATFORM_HPUX 0
|
38 | 39 | #define ZEND_HRTIME_PLATFORM_AIX 0
|
39 | 40 |
|
|
43 | 44 | #elif defined(_WIN32) || defined(_WIN64)
|
44 | 45 | # undef ZEND_HRTIME_PLATFORM_WINDOWS
|
45 | 46 | # define ZEND_HRTIME_PLATFORM_WINDOWS 1
|
| 47 | +#elif HAVE_CLOCK_GETTIME_NSEC_NP |
| 48 | +# undef ZEND_HRTIME_PLATFORM_APPLE_GETTIME_NSEC |
| 49 | +# define ZEND_HRTIME_PLATFORM_APPLE_GETTIME_NSEC 1 |
46 | 50 | #elif defined(__APPLE__)
|
47 |
| -# undef ZEND_HRTIME_PLATFORM_APPLE |
48 |
| -# define ZEND_HRTIME_PLATFORM_APPLE 1 |
| 51 | +# undef ZEND_HRTIME_PLATFORM_APPLE_MACH_ABSOLUTE |
| 52 | +# define ZEND_HRTIME_PLATFORM_APPLE_MACH_ABSOLUTE 1 |
49 | 53 | #elif (defined(__hpux) || defined(hpux)) || ((defined(__sun__) || defined(__sun) || defined(sun)) && (defined(__SVR4) || defined(__svr4__)))
|
50 | 54 | # undef ZEND_HRTIME_PLATFORM_HPUX
|
51 | 55 | # define ZEND_HRTIME_PLATFORM_HPUX 1
|
|
54 | 58 | # define ZEND_HRTIME_PLATFORM_AIX 1
|
55 | 59 | #endif
|
56 | 60 |
|
57 |
| -#define ZEND_HRTIME_AVAILABLE (ZEND_HRTIME_PLATFORM_POSIX || ZEND_HRTIME_PLATFORM_WINDOWS || ZEND_HRTIME_PLATFORM_APPLE || ZEND_HRTIME_PLATFORM_HPUX || ZEND_HRTIME_PLATFORM_AIX) |
| 61 | +#define ZEND_HRTIME_AVAILABLE (ZEND_HRTIME_PLATFORM_POSIX || ZEND_HRTIME_PLATFORM_WINDOWS || ZEND_HRTIME_PLATFORM_APPLE_MACH_ABSOLUTE || ZEND_HRTIME_PLATFORM_APPLE_GETTIME_NSEC || ZEND_HRTIME_PLATFORM_HPUX || ZEND_HRTIME_PLATFORM_AIX) |
58 | 62 |
|
59 | 63 | BEGIN_EXTERN_C()
|
60 | 64 |
|
@@ -82,7 +86,9 @@ static zend_always_inline zend_hrtime_t zend_hrtime(void)
|
82 | 86 | LARGE_INTEGER lt = {0};
|
83 | 87 | QueryPerformanceCounter(<);
|
84 | 88 | return (zend_hrtime_t)((zend_hrtime_t)lt.QuadPart * zend_hrtime_timer_scale);
|
85 |
| -#elif ZEND_HRTIME_PLATFORM_APPLE |
| 89 | +#elif ZEND_HRTIME_PLATFORM_APPLE_GETTIME_NSEC |
| 90 | + return clock_gettime_nsec_np(CLOCK_UPTIME_RAW); |
| 91 | +#elif ZEND_HRTIME_PLATFORM_APPLE_MACH_ABSOLUTE |
86 | 92 | return (zend_hrtime_t)mach_absolute_time() * zend_hrtime_timerlib_info.numer / zend_hrtime_timerlib_info.denom;
|
87 | 93 | #elif ZEND_HRTIME_PLATFORM_POSIX
|
88 | 94 | struct timespec ts = { .tv_sec = 0, .tv_nsec = 0 };
|
|
0 commit comments