On Thu, Jan 05, 2017 at 12:05:35PM +0800, Paul Goyette wrote:
On Thu, 5 Jan 2017, Paul Goyette wrote:
Currently, we have
static __inline struct bintime
ms2bintime(uint64_t ms)
{
struct bintime bt;
bt.sec = (time_t)(ms / 1000U);
bt.frac = (((ms % 1000U) >> 32)/1000U) >> 32;
return bt;
}
As far as I can tell, this will result in bt.frac always set to zero,
since the (ms % 1000U) portion is a number less than 1000, and if you
shift a number less than 1000 to the right by 32 bits, you end up with
zero!
I suspect we should have a left shift here, rather than a right shift:
bt.frac = (((ms % 1000U) << 32)/1000U) >> 32;
---------------------------------^^ ^^
^^
also here --------------------------------------^^
Why also here? (Guessing shift left to help division, then shift back again?)