On 12/21/2009 02:09 AM, Paolo Bonzini wrote:
Make the timer subsystem register its own bottom half instead of
placing the bottom half code in the heart of the main loop. To
test if an alarm timer is pending, just check if the bottom half is
scheduled.
Signed-off-by: Paolo Bonzini<pbonz...@redhat.com>
I'm not a huge fan of this for a couple reasons. The first is that it
introduces a subtle semantic change. Previously, timers always ran
before bottom halves whereas after this change, timers may run after
some bottoms halves but before others. While this should be okay in
principle, in practice, I'm sure it'll introduce regressions. I'd be
very surprised if cris wasn't affected by this.
But more importantly, I think timer dispatch needs to be part of the
select loop. malc has a git tree that replaces host alarm timers with
select() timeouts. This has a lot of really nice properties like it
eliminates the need for signals and EINTR handling. A move like this
would likely make this more difficult.
I think the opposite sort of move makes more sense. Treating bottom
halves as 0-duration timer events. Unfortunately, things like cris do
not handle this sort of change very well.
Regards,
Anthony Liguori