X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Ftime%2Ftime.h;h=f2b335cf45de0af387c2b0a9e1cba09c73ceb86a;hb=a7f2b2c4d3e62cbbcb71628363e39f6730fd8f5e;hp=5c916f4c4c2ef04b9648791d862bb3eea731a6cd;hpb=58c5a3524737ec1f6500dd766f717e2f158fc5c0;p=ccan diff --git a/ccan/time/time.h b/ccan/time/time.h index 5c916f4c..f2b335cf 100644 --- a/ccan/time/time.h +++ b/ccan/time/time.h @@ -127,7 +127,7 @@ struct timeabs time_now(void); * This value is only really useful for measuring time intervals. * * See also: - * time_since() + * timemono_since() */ struct timemono time_mono(void); @@ -320,6 +320,17 @@ static inline struct timerel timemono_between(struct timemono recent, return t; } +/** + * timemono_since - elapsed monotonic time since @old + * @old: a monotonic time from the past. + */ +static inline struct timerel timemono_since(struct timemono old) +{ + struct timemono now = time_mono(); + + return timemono_between(now, old); +} + /** * timeabs_sub - subtract a relative time from an absolute time * @abs: the absolute time. @@ -377,6 +388,28 @@ static inline struct timeabs timeabs_add(struct timeabs a, struct timerel b) 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.