On 2012-03-27 17:52, Paolo Bonzini wrote: > Il 27/03/2012 17:08, Jan Kiszka ha scritto: >>>> +#if defined(__sun__) >>>> + if (timer_create(CLOCK_HIGHRES, &ev, &host_timer)) { >>>> +#else >>>> if (timer_create(CLOCK_REALTIME, &ev, &host_timer)) { >>>> +#endif >>> >>> This should be #ifdef CLOCK_HIGHRES. >> >> Are we sure about this is and will remain equivalent and correct? >> >> Also, I found some man page that says CLOCK_HIGHRES is non-adjustable >> while CLOCK_REALTIME is. That should make a difference in QEMU. > > Right, that's why I CCed you but then I forgot to ask the question. > > Does QEMU rely on CLOCK_REALTIME when "-rtc clock=host" is in use? A > monotonic clock would work better when CLOCK_REALTIME jumps backwards > (DST->solar). If the jump goes unnoticed, the alarm timer would have no > timeout for an hour or so. > > Of course the opposite is true when going from solar time to DST; you > move the realtime clock one hour forward and, with CLOCK_MONOTONIC, a > host_clock timer to trigger an hour too late.
But the latter would be fixed up when we actually check for expired timers against the proper clocks. Hmm, I'm not sure anymore if we really need CLOCK_REALTIME for the timer here. This also has no telling history. Maybe the contributor of dynticks just didn't think about this aspect of REALTIME vs. MONOTONIC. Jan -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux