13
0

provide clock_gettime() implementation for lovely OSX, which doesn't have it

This commit is contained in:
Paul Davis 2013-08-14 12:39:34 -04:00
parent dfac01bdd4
commit 7b34b6a3f6

View File

@ -540,6 +540,31 @@ ARDOUR::get_available_sync_options ()
/** Return a monotonic value for the number of microseconds that have elapsed /** Return a monotonic value for the number of microseconds that have elapsed
* since an arbitrary zero origin. * since an arbitrary zero origin.
*/ */
#ifdef __MACH__
/* Thanks Apple for not implementing this basic SUSv2, POSIX.1-2001 function
*/
#include <mach/mach_time.h>
#define CLOCK_REALTIME 0
#define CLOCK_MONOTONIC 0
int
clock_gettime (int /*clk_id*/, struct timespec *t)
{
static bool initialized = false;
static mach_timebase_info_data_t timebase;
if (!initialized) {
mach_timebase_info(&timebase);
initialized = true;
}
uint64_t time;
time = mach_absolute_time();
double nseconds = ((double)time * (double)timebase.numer)/((double)timebase.denom);
double seconds = ((double)time * (double)timebase.numer)/((double)timebase.denom * 1e9);
t->tv_sec = seconds;
t->tv_nsec = nseconds;
return 0;
}
#endif
microseconds_t microseconds_t
ARDOUR::get_microseconds () ARDOUR::get_microseconds ()