diff --git a/sys/sys/time.h b/sys/sys/time.h index 1039c2216de..fbef8b77482 100644 --- a/sys/sys/time.h +++ b/sys/sys/time.h @@ -90,6 +90,25 @@ bintime_sub(struct bintime *bt, const struct bintime *bt2) bt->sec -= bt2->sec; } +static __inline void +bintime_mul(struct bintime *bt, u_int x) +{ + uint64_t p1, p2; + + p1 = (bt->frac & 0xffffffffllu) * x; + p2 = (bt->frac >> 32) * x + (p1 >> 32); + bt->sec *= x; + bt->sec += (p2 >> 32); + bt->frac = (p2 << 32) | (p1 & 0xffffffffllu); +} + +#define bintime_clear(a) ((a)->sec = (a)->frac = 0) +#define bintime_isset(a) ((a)->sec || (a)->frac) +#define bintime_cmp(a, b, cmp) \ + (((a)->sec == (b)->sec) ? \ + ((a)->frac cmp (b)->frac) : \ + ((a)->sec cmp (b)->sec)) + /*- * Background information: *