Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
work around lack of clock_gettime in os x
/*
author: jbenet
os x, compile with: gcc -o testo test.c
linux, compile with: gcc -o testo test.c -lrt
*/
#include <time.h>
#include <sys/time.h>
#include <stdio.h>
#ifdef __MACH__
#include <mach/clock.h>
#include <mach/mach.h>
#endif
void current_utc_time(struct timespec *ts) {
#ifdef __MACH__ // 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;
#else
clock_gettime(CLOCK_REALTIME, ts);
#endif
}
int main(int argc, char **argv) {
struct timespec ts;
current_utc_time(&ts);
printf("s: %lu\n", ts.tv_sec);
printf("ns: %lu\n", ts.tv_nsec);
return 0;
}

MacDada commented Jan 23, 2014

thx, it works! ;-)

Thanks!!!

I really appreciate it.

Thanks!!!

wujun commented Feb 3, 2015

thanks your code, thanks

THX

Awesome! Thanks

matrumz commented Nov 17, 2015

Many thanks. My senior project is that much closer to completion!

thanks for sharing,appreciate it.

I need the return value in clock_get_time(..), how can it be done os OS X?
For details please see https://github.com/microflo/microflo/blob/master/microflo/linux.hpp#L68

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment