// posix version definition to use clock_gettime #ifndef _XOPEN_SOURCE #if __STDC_VERSION__ >= 199901L #define _XOPEN_SOURCE 600 #else #define _XOPEN_SOURCE 500 #endif #endif #include "tlibc/time.h" #include #include #define K 1000 #define M 1000000 #define G 1000000000 nsec_t getTimeNsec(){ struct timespec t; assert(clock_gettime(CLOCK_REALTIME, &t) == 0); u64 n = t.tv_sec * G + t.tv_nsec; return n; } usec_t getTimeUsec(){ struct timespec t; assert(clock_gettime(CLOCK_REALTIME, &t) == 0); u64 n = t.tv_sec * M + t.tv_nsec / K; return n; } void sleepNsec(nsec_t time){ struct timespec t = { .tv_sec = time / G, .tv_nsec = time % G }; assert(nanosleep(&t, NULL) == 0); } void sleepUsec(usec_t time){ sleepNsec(time * K); } void sleepMsec(msec_t time){ sleepNsec(time * M); }