#include "time_util.h" #define NANO 1000000000 struct timespec TimeUtil::calc_abs_time(const struct timespec *ts) { struct timespec res; struct timespec cur; if (clock_gettime(CLOCK_REALTIME, &cur) == -1) err_exit(errno, "clock_gettime"); res.tv_sec = cur.tv_sec + ts->tv_sec; res.tv_nsec = cur.tv_nsec + ts->tv_nsec; res.tv_sec = res.tv_sec + floor(res.tv_nsec / NANO); res.tv_nsec = res.tv_nsec % NANO; return res; } struct timespec TimeUtil::trim_time(const struct timespec *ts) { struct timespec res; res.tv_sec = ts->tv_sec + floor(ts->tv_nsec / NANO); res.tv_nsec = ts->tv_nsec % NANO; return res; }