| | |
| | | struct timespec TimeUtil::calc_abs_time(const struct timespec *ts) { |
| | | |
| | | struct timespec res; |
| | | struct timespec timeout; |
| | | if (clock_gettime(CLOCK_REALTIME, &timeout) == -1) |
| | | struct timespec cur; |
| | | if (clock_gettime(CLOCK_REALTIME, &cur) == -1) |
| | | err_exit(errno, "clock_gettime"); |
| | | |
| | | res.tv_sec = timeout.tv_sec + ts->tv_sec; |
| | | res.tv_nsec = timeout.tv_nsec + ts->tv_nsec; |
| | | 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; |