1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| #include "px_sem_util.h"
|
| #define NANO 1000000000
| struct timespec PXSemUtil::calc_sem_timeout(const struct timespec *ts) {
|
| struct timespec res;
| struct timespec timeout;
| if (clock_gettime(CLOCK_REALTIME, &timeout) == -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 = res.tv_sec + floor(res.tv_nsec / NANO);
| res.tv_nsec = res.tv_nsec % NANO;
| return res;
| }
|
|