X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/e83d0967d4c0965eb8036248acc20d1bf12ad1d8..5df73aebf27f6c3b57a91ecfd504fa6ee367d20a:/lib/timeval.h diff --git a/lib/timeval.h b/lib/timeval.h index cefc990..16c08e9 100644 --- a/lib/timeval.h +++ b/lib/timeval.h @@ -38,6 +38,33 @@ static inline struct timeval tvsub(const struct timeval a, return r; } +static inline struct timeval tvadd(const struct timeval a, + const struct timeval b) { + struct timeval r; + + r.tv_sec = a.tv_sec + b.tv_sec; + r.tv_usec = a.tv_usec + b.tv_usec; + if(r.tv_usec < 0) { + r.tv_usec += 1000000; + r.tv_sec--; + } + if(r.tv_usec > 999999) { + r.tv_usec -= 1000000; + r.tv_sec++; + } + return r; +} + +static inline double tvdouble(const struct timeval a) { + return a.tv_sec + a.tv_usec / 1000000.0; +} + +static inline int64_t tvsub_us(const struct timeval a, + const struct timeval b) { + return (((uint64_t)a.tv_sec * 1000000 + a.tv_usec) + - ((uint64_t)b.tv_sec * 1000000 + b.tv_usec)); +} + #endif /* TIMEVAL_H */ /*