[PATCH] uml: change interface to boot_timer_handler
authorBodo Stroesser <bstroesser@fujitsu-siemens.com>
Thu, 19 Jan 2006 01:42:43 +0000 (17:42 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Thu, 19 Jan 2006 03:20:19 +0000 (19:20 -0800)
Current implementation of boot_timer_handler isn't usable for s390.  So I
changed its name to do_boot_timer_handler, taking (struct sigcontext *)sc as
argument.  do_boot_timer_handler is called from new boot_timer_handler() in
arch/um/os-Linux/signal.c, which uses the same mechanisms as other signal
handler to find out sigcontext pointer.

Signed-off-by: Bodo Stroesser <bstroesser@fujitsu-siemens.com>
Signed-off-by: Jeff Dike <jdike@addtoit.com>
Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/um/kernel/time_kern.c
arch/um/os-Linux/signal.c

index 6712ffad0242c55e3ce1c33e340e55ee09c818c8..6fa4e1b892b7407bfa4d082f782a5225777f60a8 100644 (file)
@@ -84,12 +84,11 @@ void timer_irq(union uml_pt_regs *regs)
        }
 }
 
-void boot_timer_handler(int sig)
+void do_boot_timer_handler(struct sigcontext * sc)
 {
        struct pt_regs regs;
 
-       CHOOSE_MODE((void)
-                   (UPT_SC(&regs.regs) = (struct sigcontext *) (&sig + 1)),
+       CHOOSE_MODE((void) (UPT_SC(&regs.regs) = sc),
                    (void) (regs.regs.skas.is_user = 0));
        do_timer(&regs);
 }
index da474a797fbf23b0ff6f621ae2b24115fc01cff3..884e45751944f341dbd9312fc29ca5b2f5138afb 100644 (file)
@@ -12,7 +12,6 @@
 #include <string.h>
 #include <sys/mman.h>
 #include "user_util.h"
-#include "kern_util.h"
 #include "user.h"
 #include "signal_kern.h"
 #include "sysdep/sigcontext.h"
@@ -49,6 +48,17 @@ void alarm_handler(ARCH_SIGHDLR_PARAM)
                switch_timers(1);
 }
 
+extern void do_boot_timer_handler(struct sigcontext * sc);
+
+void boot_timer_handler(ARCH_SIGHDLR_PARAM)
+{
+       struct sigcontext *sc;
+
+       ARCH_GET_SIGCONTEXT(sc, sig);
+
+       do_boot_timer_handler(sc);
+}
+
 void set_sigstack(void *sig_stack, int size)
 {
        stack_t stack = ((stack_t) { .ss_flags  = 0,