Add few more bintime math macros.

This commit is contained in:
Alexander Motin 2010-09-08 20:09:50 +00:00
parent fc780ca17e
commit 170a7705ae

View file

@ -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:
*