On Tue, Mar 05, 2013 at 11:53:02AM +0800, Feng Tang wrote:Probably want to use clocksource instead of cyclecounter, but I think Jason's approach sounds ok. I might suggest that you initially make the function static to the timekeeping code, just so we don't get unexpected users.
Okay, give it a good look though, I only wrote it out in email, never// Drops some small precision along the way but is simple..Your way is surely more accurate, if maintainers are ok with adding
static inline u64 cyclecounter_cyc2ns_128(const struct cyclecounter *cc,
cycle_t cycles)
{
u64 max = U64_MAX/cc->mult;
u64 num = cycles/max;
u64 result = num * ((max * cc->mult) >> cc->shift);
return result + cyclecounter_cyc2ns(cc, cycles - num*cc->mult);
}
the new API, I will use it.
tested it :)