47 lines
903 B
C
47 lines
903 B
C
// 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 <time.h>
|
|
#include <assert.h>
|
|
|
|
#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);
|
|
}
|