UML - Signal handling tidying
PATCH 4/7 UML - Signal handling tidying
This patch tidies the signal handling code slightly.
pending is renamed to signals_pending for symmetry with signals_enabled.
remove_sigstack was unused, so can be deleted.
The value of change_sig was never used, so it is now void and the return value is not calculated any more.
Signed-off-by Jeff Dike <[email protected]>
--- arch/um/os-Linux/signal.c | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-)
arch/um/os-Linux/signal.c +12 -21
@@ -63,7 +63,7 @@ static void sig_handler_common(int sig,#define SIGVTALRM_MASK (1 << SIGVTALRM_BIT)static int signals_enabled; -static unsigned int pending; +static unsigned int signals_pending;void sig_handler (int sig,struct sigcontext *sc) {
@@ -71,7 +71,7 @@ void sig_handler(int sig, struct sigcont enabled = signals_enabled;if (!enabled && (sig ==SIGIO )) { - pending |=SIGIO_MASK ; + signals_pending |=SIGIO_MASK ;return ; }
@@ -99,7 +99,7 @@ void alarm_handler(int sig, struct sigco enabled = signals_enabled;if (!signals_enabled) { - pending |=SIGVTALRM_MASK ; + signals_pending |=SIGVTALRM_MASK ;return ; }
@@ -125,16 +125,6 @@ void set_sigstack(void *sig_stack, int spanic ("enabling signal stack failed, errno = %d\n" , errno); } -void remove_sigstack (void ) -{ -stack_t stack = ((stack_t ) { .ss_flags =SS_DISABLE , - .ss_sp =NULL , - .ss_size =0 }); - -if (sigaltstack (&stack,NULL ) !=0 ) -panic ("disabling signal stack failed, errno = %d\n" , errno); -} -void (*handlers[_NSIG])(int sig,struct sigcontext *sc);void handle_signal (int sig,struct sigcontext *sc)
@@ -213,13 +203,14 @@ void set_handler(int sig, void (*handlerint change_sig (int signal,int on) { -sigset_t sigset, old; +sigset_t sigset;sigemptyset (&sigset);sigaddset (&sigset, signal); -if (sigprocmask (on ?SIG_UNBLOCK :SIG_BLOCK , &sigset, &old) <0 ) +if (sigprocmask (on ?SIG_UNBLOCK :SIG_BLOCK , &sigset,NULL ) <0 )return -errno; -return !sigismember (&old, signal); + +return 0 ; }void block_signals (void )
@@ -244,26 +235,26 @@ void unblock_signals(void)/* * We loop because the IRQ handler returns with interrupts off. So, * interrupts may have arrived and we need to re-enable them and -* recheck pending. +* recheck signals_pending. */ while (1 ) {/* * Save and reset save_pending after enabling signals. This -* way, pending won't be changed while we're reading it. +* way, signals_pending won't be changed while we're reading it. */ signals_enabled =1 ;/* -* Setting signals_enabled and reading pending must +* Setting signals_enabled and reading signals_pending must * happen in this order. */ barrier (); - save_pending = pending; + save_pending = signals_pending;if (save_pending ==0 )return ; - pending =0 ; + signals_pending =0 ;/* * We have pending interrupts, so disable signals, as the
-------------------------------------------------------------------------
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