On 03/05/2013 12:32 PM, Jason Gunthorpe wrote:
On Tue, Mar 05, 2013 at 11:53:02AM +0800, Feng Tang wrote:

// Drops some small precision along the way but is simple..
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);
}
Your way is surely more accurate, if maintainers are ok with adding
the new API, I will use it.
Okay, give it a good look though, I only wrote it out in email, never
tested it :)

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.

thanks
-john
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to