Fix Sierra clock_gettime issue

Signed-off-by: Ricky Zhang <rickyzhang@gmail.com>
This commit is contained in:
Ricky Zhang 2017-08-07 10:42:29 -04:00
parent b5820d8059
commit b32a8c8588
2 changed files with 19 additions and 19 deletions

View File

@ -185,10 +185,10 @@ typedef char * caddr_t;
#endif
/* Time data type for Time Manager emulation */
#ifdef HAVE_CLOCK_GETTIME
typedef struct timespec tm_time_t;
#elif defined(__MACH__)
#if defined(__MACH__)
typedef mach_timespec_t tm_time_t;
#elif defined(HAVE_CLOCK_GETTIME)
typedef struct timespec tm_time_t;
#else
typedef struct timeval tm_time_t;
#endif
@ -266,7 +266,7 @@ static inline int testandset(volatile int *p)
__asm__ __volatile__("0: cs %0,%1,0(%2)\n"
" jl 0b"
: "=&d" (ret)
: "r" (1), "a" (p), "0" (*p)
: "r" (1), "a" (p), "0" (*p)
: "cc", "memory" );
return ret;
}
@ -315,7 +315,7 @@ static inline int testandset(volatile int *p)
__asm__ __volatile__("swp %0, %1, [%2]"
: "=r"(ret)
: "0"(1), "r"(p));
return ret;
}
#endif

View File

@ -44,7 +44,7 @@ static inline void mach_current_time(tm_time_t &t) {
host_get_clock_service(mach_host_self(), SYSTEM_CLOCK, &host_clock);
host_clock_inited = true;
}
clock_get_time(host_clock, &t);
}
#endif
@ -57,14 +57,14 @@ static inline void mach_current_time(tm_time_t &t) {
void Microseconds(uint32 &hi, uint32 &lo)
{
D(bug("Microseconds\n"));
#if defined(HAVE_CLOCK_GETTIME)
struct timespec t;
clock_gettime(CLOCK_REALTIME, &t);
uint64 tl = (uint64)t.tv_sec * 1000000 + t.tv_nsec / 1000;
#elif defined(__MACH__)
#if defined(__MACH__)
tm_time_t t;
mach_current_time(t);
uint64 tl = (uint64)t.tv_sec * 1000000 + t.tv_nsec / 1000;
#elif defined(HAVE_CLOCK_GETTIME)
struct timespec t;
clock_gettime(CLOCK_REALTIME, &t);
uint64 tl = (uint64)t.tv_sec * 1000000 + t.tv_nsec / 1000;
#else
struct timeval t;
gettimeofday(&t, NULL);
@ -91,10 +91,10 @@ uint32 TimerDateTime(void)
void timer_current_time(tm_time_t &t)
{
#ifdef HAVE_CLOCK_GETTIME
clock_gettime(CLOCK_REALTIME, &t);
#elif defined(__MACH__)
#if defined(__MACH__)
mach_current_time(t);
#elif defined(HAVE_CLOCK_GETTIME)
clock_gettime(CLOCK_REALTIME, &t);
#else
gettimeofday(&t, NULL);
#endif
@ -229,14 +229,14 @@ int32 timer_host2mac_time(tm_time_t hosttime)
uint64 GetTicks_usec(void)
{
#ifdef HAVE_CLOCK_GETTIME
struct timespec t;
clock_gettime(CLOCK_REALTIME, &t);
return (uint64)t.tv_sec * 1000000 + t.tv_nsec / 1000;
#elif defined(__MACH__)
#if defined(__MACH__)
tm_time_t t;
mach_current_time(t);
return (uint64)t.tv_sec * 1000000 + t.tv_nsec / 1000;
#elif defined(HAVE_CLOCK_GETTIME)
struct timespec t;
clock_gettime(CLOCK_REALTIME, &t);
return (uint64)t.tv_sec * 1000000 + t.tv_nsec / 1000;
#else
struct timeval t;
gettimeofday(&t, NULL);