struct timemono t1, t2;
struct timerel t3;
- plan_tests(3);
+ plan_tests(5);
/* Test time_mono */
t1 = time_mono();
ok1(time_less(timemono_between(t1, t2), t3));
ok1(time_less(timemono_since(t1), t3));
+ ok1(timemono_add(t1, t3).ts.tv_sec == t1.ts.tv_sec + 1);
+ ok1(timemono_add(t2, t3).ts.tv_nsec == t2.ts.tv_nsec);
+
return exit_status();
}
return t;
}
+/**
+ * timemono_add - add a relative to a monotonic time
+ * @a: the monotonic time.
+ * @b: a relative time.
+ *
+ * The times must not overflow, or the results are undefined.
+ *
+ * Example:
+ * // We do one every second.
+ * static struct timemono next_timem(void)
+ * {
+ * return timemono_add(time_mono(), time_from_msec(1000));
+ * }
+ */
+static inline struct timemono timemono_add(struct timemono a, struct timerel b)
+{
+ struct timemono t;
+
+ t.ts = time_add_(a.ts, b.ts);
+ return t;
+}
+
/**
* timerel_add - add two relative times
* @a: one relative time.