summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/cyclictest/cyclictest.c12
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;
}