aboutsummaryrefslogtreecommitdiffstats
path: root/arch/um/include/os.h
diff options
context:
space:
mode:
authorJeff Dike <jdike@addtoit.com>2007-10-16 04:27:22 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-16 12:43:08 -0400
commit181bde801afae4304843ce95c868d4419ae87310 (patch)
treef33e6c88e36cda7699fc2dfe2b6ac9ccb3c6963f /arch/um/include/os.h
parent532d0fa4d104ca3e37dd38bc5073376fcc3c2712 (diff)
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>
Diffstat (limited to 'arch/um/include/os.h')
-rw-r--r--arch/um/include/os.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/um/include/os.h b/arch/um/include/os.h
index e861c8adb44f..12de1ea68370 100644
--- a/arch/um/include/os.h
+++ b/arch/um/include/os.h
@@ -250,7 +250,7 @@ extern void os_dump_core(void);
250/* time.c */ 250/* time.c */
251#define BILLION (1000 * 1000 * 1000) 251#define BILLION (1000 * 1000 * 1000)
252 252
253extern void switch_timers(int to_real); 253extern int switch_timers(int to_real);
254extern void idle_sleep(int secs); 254extern void idle_sleep(int secs);
255extern int set_interval(int is_virtual); 255extern int set_interval(int is_virtual);
256extern void disable_timer(void); 256extern void disable_timer(void);