forked from Mirrorlandia_minetest/minetest
Improve clock_gettime usage
- correctly use value of _POSIX_MONOTONIC_CLOCK - drop special path for macOS: it supports clock_gettime since macOS 10.12
This commit is contained in:
parent
d4123a387c
commit
bd06466d3a
@ -89,11 +89,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#ifndef _WIN32 // POSIX
|
#ifndef _WIN32 // POSIX
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
|
||||||
#if defined(__MACH__) && defined(__APPLE__)
|
|
||||||
#include <mach/clock.h>
|
|
||||||
#include <mach/mach.h>
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace porting
|
namespace porting
|
||||||
@ -183,21 +178,16 @@ inline u64 getTimeNs() { return os_get_time(1000*1000*1000); }
|
|||||||
|
|
||||||
inline void os_get_clock(struct timespec *ts)
|
inline void os_get_clock(struct timespec *ts)
|
||||||
{
|
{
|
||||||
#if defined(__MACH__) && defined(__APPLE__)
|
#if defined(CLOCK_MONOTONIC_RAW)
|
||||||
// From http://stackoverflow.com/questions/5167269/clock-gettime-alternative-in-mac-os-x
|
|
||||||
// OS X does not have clock_gettime, use clock_get_time
|
|
||||||
clock_serv_t cclock;
|
|
||||||
mach_timespec_t mts;
|
|
||||||
host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock);
|
|
||||||
clock_get_time(cclock, &mts);
|
|
||||||
mach_port_deallocate(mach_task_self(), cclock);
|
|
||||||
ts->tv_sec = mts.tv_sec;
|
|
||||||
ts->tv_nsec = mts.tv_nsec;
|
|
||||||
#elif defined(CLOCK_MONOTONIC_RAW)
|
|
||||||
clock_gettime(CLOCK_MONOTONIC_RAW, ts);
|
clock_gettime(CLOCK_MONOTONIC_RAW, ts);
|
||||||
#elif defined(_POSIX_MONOTONIC_CLOCK)
|
#elif defined(_POSIX_MONOTONIC_CLOCK) && _POSIX_MONOTONIC_CLOCK > 0
|
||||||
clock_gettime(CLOCK_MONOTONIC, ts);
|
clock_gettime(CLOCK_MONOTONIC, ts);
|
||||||
#else
|
#else
|
||||||
|
# if defined(_POSIX_MONOTONIC_CLOCK) && _POSIX_MONOTONIC_CLOCK == 0
|
||||||
|
// zero means it might be supported at runtime
|
||||||
|
if (clock_gettime(CLOCK_MONOTONIC, ts) == 0)
|
||||||
|
return;
|
||||||
|
# endif
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
gettimeofday(&tv, NULL);
|
gettimeofday(&tv, NULL);
|
||||||
TIMEVAL_TO_TIMESPEC(&tv, ts);
|
TIMEVAL_TO_TIMESPEC(&tv, ts);
|
||||||
|
Loading…
Reference in New Issue
Block a user