Skip to content
  • Jeff Dike's avatar
    uml: fix timer switching · 181bde80
    Jeff Dike authored
    
    
    Fix up the switching between virtual and real timers.  The idle loop sleeps,
    so the timer at that point must be real time.  At all other times, the timer
    must be virtual.  Even when userspace is running, and the kernel is asleep,
    the virtual timer is correct because the process timer will be running and the
    process timer will be firing.
    
    The timer switch used to be in the context switch and timer handler code.
    This is moved to the idle loop and the signal handler, making it much more
    clear why it is happening.
    
    switch_timers now returns the old timer type so that it may be restored.  The
    signal handler uses this in order to restore the previous timer type when it
    returns.
    
    Signed-off-by: default avatarJeff Dike <jdike@linux.intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    181bde80