On Mon, Jan 31, 2011 at 04:17:52PM -0600, Anthony Liguori wrote: > On 01/31/2011 03:51 PM, Paolo Bonzini wrote: >> Suggested by Aurelien Jarno. >> >> Signed-off-by: Paolo Bonzini<pbonz...@redhat.com> >> > > Something I've found is that we have a lot of bugs that are the result > of unit conversions when the unit can't be mapped directly to base 10. > > This happens in both the PIT and RTC and probably every other fixed bus > speed based clock we support. > > I think it would be better to have a Unit argument to qemu_get_clock to > specify the desired units. That way, we could request NS as the time > unit or something like PC_FREQ0 which would map to the bus speed of the > PIT.
It's more or less what is already done with the two versions of the functions, qemu_get_clock() which can return different unit depending on what you ask (and in my opinion should simply disappear because it's the best way to have bugs), and qemu_get_clock_ns() that always return it in nanoseconds. What you suggests is a generalization of this second function to different units than ns. That's an option, but we should pay attention that given we work in integer, a conversion decrease the precision, so it should usually be done at the last moment to keep the precision correct (assuming ns is precise enough, which I guess is true). In any case I think this patch series should be applied as it fixes a real bug. It's already a step in the right direction, as it removes useless conversions, as all the involved functions use ns in fine. -- Aurelien Jarno GPG: 1024D/F1BCDB73 aurel...@aurel32.net http://www.aurel32.net