5 #include <sys/_types/_timespec.h> 7 #include <mach/clock.h> 8 #include <mach/mach_time.h> 15 #define TIMER_ABSTIME -1 16 #define CLOCK_REALTIME CALENDAR_CLOCK 17 #define CLOCK_MONOTONIC SYSTEM_CLOCK 19 #if !defined(__DARWIN_C_LEVEL) || __DARWIN_C_LEVEL < 199309L 29 #include <mach/mach_time.h> 31 #define MT_NANO (+1.0E-9) 32 #define MT_GIGA UINT64_C(1000000000) 35 static double mt_timebase = 0.0;
36 static uint64_t mt_timestart = 0;
41 kern_return_t retval = KERN_SUCCESS;
45 mach_timebase_info_data_t tb = { 0 };
46 mach_timebase_info(&tb);
47 mt_timebase = tb.numer;
48 mt_timebase /= tb.denom;
49 mt_timestart = mach_absolute_time();
52 double diff = (mach_absolute_time() - mt_timestart) * mt_timebase;
54 tp->tv_nsec = diff - (tp->tv_sec *
MT_GIGA);
61 host_get_clock_service(mach_host_self(), clk_id, &cclock);
62 retval = clock_get_time(cclock, &mts);
63 mach_port_deallocate(mach_task_self(), cclock);
65 tp->tv_sec = mts.tv_sec;
66 tp->tv_nsec = mts.tv_nsec;
#define TIMER_ABSTIME
Definition: mach_gettime.h:15
int clockid_t
Definition: mach_gettime.h:20
int clock_gettime(clockid_t clk_id, struct timespec *tp)
Definition: mach_gettime.h:39
#define MT_GIGA
Definition: mach_gettime.h:32
#define MT_NANO
Definition: mach_gettime.h:31