uml: eliminate SIGALRM
authorJeff Dike <jdike@addtoit.com>
Tue, 16 Oct 2007 08:27:27 +0000 (01:27 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Tue, 16 Oct 2007 16:43:08 +0000 (09:43 -0700)
Now that ITIMER_REAL is no longer used, there is no need for any use of
SIGALRM whatsoever.  This patch removes all mention of it.

In addition, real_alarm_handler took a signal argument which is now always
SIGVTALRM.  So, that is gone.

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/os-Linux/irq.c
arch/um/os-Linux/main.c
arch/um/os-Linux/process.c
arch/um/os-Linux/signal.c
arch/um/os-Linux/skas/process.c
arch/um/os-Linux/skas/trap.c
arch/um/os-Linux/trap.c

index 2fe482219b6b2cc9604a2b0fbd30020766864577..6aa6f95d652491ab4e1161247febeaa1c91856c1 100644 (file)
@@ -146,6 +146,6 @@ void init_irq_signals(int on_sigstack)
        flags = on_sigstack ? SA_ONSTACK : 0;
 
        set_handler(SIGIO, (__sighandler_t) sig_handler, flags | SA_RESTART,
-                   SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1);
+                   SIGUSR1, SIGIO, SIGWINCH, SIGVTALRM, -1);
        signal(SIGWINCH, SIG_IGN);
 }
index 1518f7a45a248bc6653aeff4a4344e9172effddd..82c3778627b8e91e448e969022c7b06e1a2241ab 100644 (file)
@@ -161,7 +161,7 @@ int __init main(int argc, char **argv, char **envp)
         * some time) and cause a segfault.
         */
 
-       /* stop timers and set SIG*ALRM to be ignored */
+       /* stop timers and set SIGVTALRM to be ignored */
        disable_timer();
 
        /* disable SIGIO for the fds and set SIGIO to be ignored */
index 90b480cf78f4ffaedd719cb04c2bfbb89bfcaaca..37781db4cecad92a5849bb86d7fca6a3812e627e 100644 (file)
@@ -238,15 +238,15 @@ out:
 void init_new_thread_signals(void)
 {
        set_handler(SIGSEGV, (__sighandler_t) sig_handler, SA_ONSTACK,
-                   SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1);
+                   SIGUSR1, SIGIO, SIGWINCH, SIGVTALRM, -1);
        set_handler(SIGTRAP, (__sighandler_t) sig_handler, SA_ONSTACK,
-                   SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1);
+                   SIGUSR1, SIGIO, SIGWINCH, SIGVTALRM, -1);
        set_handler(SIGFPE, (__sighandler_t) sig_handler, SA_ONSTACK,
-                   SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1);
+                   SIGUSR1, SIGIO, SIGWINCH, SIGVTALRM, -1);
        set_handler(SIGILL, (__sighandler_t) sig_handler, SA_ONSTACK,
-                   SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1);
+                   SIGUSR1, SIGIO, SIGWINCH, SIGVTALRM, -1);
        set_handler(SIGBUS, (__sighandler_t) sig_handler, SA_ONSTACK,
-                   SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1);
+                   SIGUSR1, SIGIO, SIGWINCH, SIGVTALRM, -1);
        signal(SIGHUP, SIG_IGN);
 
        init_irq_signals(1);
index fbad174775ee27cd138a4112b63631d231341370..e9800b0b5689b6abc750606ab886826709964e56 100644 (file)
@@ -15,8 +15,7 @@
 #include "user.h"
 
 /*
- * These are the asynchronous signals.  SIGVTALRM and SIGARLM are handled
- * together under SIGVTALRM_BIT.  SIGPROF is excluded because we want to
+ * These are the asynchronous signals.  SIGPROF is excluded because we want to
  * be able to profile all of UML, not just the non-critical sections.  If
  * profiling is not thread-safe, then that is not my problem.  We can disable
  * profiling when SMP is enabled in that case.
@@ -27,9 +26,6 @@
 #define SIGVTALRM_BIT 1
 #define SIGVTALRM_MASK (1 << SIGVTALRM_BIT)
 
-#define SIGALRM_BIT 2
-#define SIGALRM_MASK (1 << SIGALRM_BIT)
-
 /*
  * These are used by both the signal handlers and
  * block/unblock_signals.  I don't want modifications cached in a
@@ -55,7 +51,7 @@ void sig_handler(int sig, struct sigcontext *sc)
        set_signals(enabled);
 }
 
-static void real_alarm_handler(int sig, struct sigcontext *sc)
+static void real_alarm_handler(struct sigcontext *sc)
 {
        struct uml_pt_regs regs;
 
@@ -63,7 +59,7 @@ static void real_alarm_handler(int sig, struct sigcontext *sc)
                copy_sc(&regs, sc);
        regs.is_user = 0;
        unblock_signals();
-       timer_handler(sig, &regs);
+       timer_handler(SIGVTALRM, &regs);
 }
 
 void alarm_handler(int sig, struct sigcontext *sc)
@@ -72,27 +68,20 @@ void alarm_handler(int sig, struct sigcontext *sc)
 
        enabled = signals_enabled;
        if (!signals_enabled) {
-               if (sig == SIGVTALRM)
-                       pending |= SIGVTALRM_MASK;
-               else pending |= SIGALRM_MASK;
-
+               pending |= SIGVTALRM_MASK;
                return;
        }
 
        block_signals();
 
-       real_alarm_handler(sig, sc);
+       real_alarm_handler(sc);
        set_signals(enabled);
 }
 
 void timer_init(void)
 {
        set_handler(SIGVTALRM, (__sighandler_t) alarm_handler,
-                   SA_ONSTACK | SA_RESTART, SIGUSR1, SIGIO, SIGWINCH,
-                   SIGALRM, -1);
-       set_handler(SIGALRM, (__sighandler_t) alarm_handler,
-                   SA_ONSTACK | SA_RESTART, SIGUSR1, SIGIO, SIGWINCH,
-                   SIGALRM, -1);
+                   SA_ONSTACK | SA_RESTART, SIGUSR1, SIGIO, SIGWINCH, -1);
 }
 
 void set_sigstack(void *sig_stack, int size)
@@ -267,11 +256,8 @@ void unblock_signals(void)
                if (save_pending & SIGIO_MASK)
                        sig_handler_common_skas(SIGIO, NULL);
 
-               if (save_pending & SIGALRM_MASK)
-                       real_alarm_handler(SIGALRM, NULL);
-
                if (save_pending & SIGVTALRM_MASK)
-                       real_alarm_handler(SIGVTALRM, NULL);
+                       real_alarm_handler(NULL);
        }
 }
 
index 3e64814e888ef5d7670aff91483f21e2e3e395b4..9936531a262078e82a2be1afffb2ed1f104787b5 100644 (file)
@@ -222,7 +222,6 @@ static int userspace_tramp(void *stack)
                sigemptyset(&sa.sa_mask);
                sigaddset(&sa.sa_mask, SIGIO);
                sigaddset(&sa.sa_mask, SIGWINCH);
-               sigaddset(&sa.sa_mask, SIGALRM);
                sigaddset(&sa.sa_mask, SIGVTALRM);
                sigaddset(&sa.sa_mask, SIGUSR1);
                sa.sa_flags = SA_ONSTACK;
@@ -539,8 +538,7 @@ int start_idle_thread(void *stack, jmp_buf *switch_buf)
        int n;
 
        set_handler(SIGWINCH, (__sighandler_t) sig_handler,
-                   SA_ONSTACK | SA_RESTART, SIGUSR1, SIGIO, SIGALRM,
-                   SIGVTALRM, -1);
+                   SA_ONSTACK | SA_RESTART, SIGUSR1, SIGIO, SIGVTALRM, -1);
 
        /*
         * Can't use UML_SETJMP or UML_LONGJMP here because they save
index e53face44200bfc0c9929939a5ce5d57a0f4bbb8..3b1b9244f468d4a4d54808b61d5e655e54c1bcb3 100644 (file)
@@ -58,9 +58,8 @@ void sig_handler_common_skas(int sig, void *sc_ptr)
 
        handler = sig_info[sig];
 
-       /* unblock SIGALRM, SIGVTALRM, SIGIO if sig isn't IRQ signal */
-       if (sig != SIGIO && sig != SIGWINCH &&
-           sig != SIGVTALRM && sig != SIGALRM)
+       /* unblock SIGVTALRM, SIGIO if sig isn't IRQ signal */
+       if ((sig != SIGIO) && (sig != SIGWINCH) && (sig != SIGVTALRM))
                unblock_signals();
 
        handler(sig, r);
index d3a34ca8a89197bfa7730c6ad11be7e214203016..2a1c9843e32e0e298868f0e971bd85cc08b45751 100644 (file)
@@ -20,5 +20,4 @@ void os_fill_handlinfo(struct kern_handlers h)
        sig_info[SIGSEGV] = h.page_fault;
        sig_info[SIGIO] = h.sigio_handler;
        sig_info[SIGVTALRM] = h.timer_handler;
-       sig_info[SIGALRM] = h.timer_handler;
 }