]> git.baikalelectronics.ru Git - kernel.git/commit
uml: fix timer switching
authorJeff Dike <jdike@addtoit.com>
Tue, 16 Oct 2007 08:27:22 +0000 (01:27 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Tue, 16 Oct 2007 16:43:08 +0000 (09:43 -0700)
commite8fadbef4367f50c3910eddec914964b23421d30
treef33e6c88e36cda7699fc2dfe2b6ac9ccb3c6963f
parent62fbc11d240204a70caadee3a3f84d6f2fcf2b4e
uml: fix timer switching

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: Jeff Dike <jdike@linux.intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/um/include/os.h
arch/um/kernel/process.c
arch/um/os-Linux/signal.c
arch/um/os-Linux/time.c