diff options
Diffstat (limited to 'src/cyclictest/cyclictest.c')
-rw-r--r-- | src/cyclictest/cyclictest.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c index 38525d4..95bdfc3 100644 --- a/src/cyclictest/cyclictest.c +++ b/src/cyclictest/cyclictest.c @@ -369,6 +369,12 @@ static inline void tsnorm(struct timespec *ts) } } +static inline int tsgreater(struct timespec *a, struct timespec *b) +{ + return ((a->tv_sec > b->tv_sec) || + (a->tv_sec == b->tv_sec && a->tv_nsec > b->tv_nsec)); +} + static inline int64_t calcdiff(struct timespec t1, struct timespec t2) { int64_t diff; @@ -949,6 +955,12 @@ void *timerthread(void *param) } tsnorm(&next); + while (tsgreater(&now, &next)) { + next.tv_sec += interval.tv_sec; + next.tv_nsec += interval.tv_nsec; + tsnorm(&next); + } + if (par->max_cycles && par->max_cycles == stat->cycles) break; } |