UML - Eliminate SIGALRM
PATCH 10/11 UML - Eliminate SIGALRM
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 <[email protected]>
--- arch/um/os-Linux/irq.c | 2 +- arch/um/os-Linux/main.c | 2 +- arch/um/os-Linux/process.c | 10 +++++----- arch/um/os-Linux/signal.c | 28 +++++++--------------------- arch/um/os-Linux/skas/process.c | 4 +--- arch/um/os-Linux/skas/trap.c | 5 ++--- arch/um/os-Linux/trap.c | 1 - 7 files changed, 17 insertions(+), 35 deletions(-)
arch/um/os-Linux/skas/process.c +1 -3
@@ -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_bint 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
arch/um/os-Linux/irq.c +1 -1
@@ -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 ); }
arch/um/os-Linux/main.c +1 -1
@@ -161,7 +161,7 @@ int __init main(int argc, char **argv, c* 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 */
arch/um/os-Linux/process.c +5 -5
@@ -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 );
arch/um/os-Linux/signal.c +7 -21
@@ -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 sigcontset_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,copy_sc (®s, sc); regs.is_user =0 ;unblock_signals (); -timer_handler (sig, ®s); +timer_handler (SIGVTALRM , ®s); }void alarm_handler (int sig,struct sigcontext *sc)
@@ -72,27 +68,20 @@ void alarm_handler(int sig, struct sigco 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 ); } }
arch/um/os-Linux/skas/trap.c +2 -3
@@ -58,9 +58,8 @@ void sig_handler_common_skas(int sig, vo 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);
arch/um/os-Linux/trap.c +0 -1
@@ -20,5 +20,4 @@ void os_fill_handlinfo(struct kern_handl sig_info[SIGSEGV ] = h.page_fault; sig_info[SIGIO ] = h.sigio_handler; sig_info[SIGVTALRM ] = h.timer_handler; - sig_info[SIGALRM ] = h.timer_handler; }
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
User-mode-linux-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel