X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/7aa087a7e0f7829c8c6778fa420e0b5df0d0ca77..ad2f8275a5fc0dba29ca97bc02342d1f1627e590:/lib/timeval.h diff --git a/lib/timeval.h b/lib/timeval.h index ff8ccf0..16c08e9 100644 --- a/lib/timeval.h +++ b/lib/timeval.h @@ -38,8 +38,29 @@ static inline struct timeval tvsub(const struct timeval a, return r; } -static inline uint64_t tvsub_us(const struct timeval a, - const struct timeval b) { +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)); }