15 double eTimebase = 0.0;
16 uint64_t eTimeStart = 0;
21 #ifdef __MACH__ // OS X does not have clock_gettime, use clock_get_time 24 mach_timebase_info_data_t tb = { .numer = 0, .denom = 1 };
25 mach_timebase_info(&tb);
27 eTimebase /= tb.denom;
28 eTimeStart = mach_absolute_time();
30 double diff = (mach_absolute_time() - eTimeStart) * eTimebase;
31 time->tv_sec = diff * MACNANO;
32 time->tv_nsec = diff - (time->tv_sec * MACGIGA);
35 return clock_gettime( CLOCK_MONOTONIC, time );
41 #ifdef __MACH__ // OS X does not have clock_gettime, use clock_get_time 44 mach_timebase_info_data_t tb = { .numer = 0, .denom = 1 };
45 mach_timebase_info(&tb);
47 eTimebase /= tb.denom;
48 eTimeStart = mach_absolute_time();
50 double diff = (mach_absolute_time() - eTimeStart) * eTimebase;
51 time->tv_sec = diff * MACNANO;
52 time->tv_nsec = diff - (time->tv_sec * MACGIGA);
55 return clock_gettime(CLOCK_PROCESS_CPUTIME_ID, time);
62 return (
long long int)time.tv_sec * (
long long int)
NSEC_PER_SEC + (
long long int)time.tv_nsec;
67 return (
double)time.tv_sec + (double)time.tv_nsec / (
double)
NSEC_PER_SEC;
70 void TimeDiff(
struct timespec start,
struct timespec end,
struct timespec* diff)
72 if ((end.tv_nsec - start.tv_nsec < 0))
74 diff->tv_sec = end.tv_sec - start.tv_sec - 1;
75 diff->tv_nsec = 1000000000 + end.tv_nsec - start.tv_nsec;
79 diff->tv_sec = end.tv_sec - start.tv_sec;
80 diff->tv_nsec = end.tv_nsec - start.tv_nsec;
88 struct tm* processed_time;
91 processed_time = gmtime(&raw_time);
void TimeDiff(struct timespec start, struct timespec end, struct timespec *diff)
int GetTimeMonotonic(struct timespec *time)
int GetTimeCurrent(struct timespec *time)
size_t GetTimeAbsoluteStr(char *ptr)
double TimeToSec(struct timespec time)
uint64_t TimeToNSec(struct timespec time)