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

@ -541,6 +541,31 @@ ARDOUR::get_available_sync_options ()
* 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 ()
{ {