# Pull the signals_enabled bit apart into signal-specific bits. This is # used by unmask_* in the genirq patch. # # This is used by unmask_* in genirq. Index: linux-2.6.17/arch/um/os-Linux/signal.c =================================================================== --- linux-2.6.17.orig/arch/um/os-Linux/signal.c 2007-11-19 11:58:10.000000000 -0500 +++ linux-2.6.17/arch/um/os-Linux/signal.c 2008-01-07 12:51:10.000000000 -0500 @@ -31,7 +31,7 @@ * block/unblock_signals. I don't want modifications cached in a * register - they must go straight to memory. */ -static volatile int signals_enabled = 1; +static volatile int signals_enabled = 0; static volatile int pending = 0; void sig_handler(int sig, struct sigcontext *sc) @@ -39,7 +39,7 @@ void sig_handler(int sig, struct sigcont int enabled; enabled = signals_enabled; - if (!enabled && (sig == SIGIO)) { + if (!(enabled & SIGIO_MASK) && (sig == SIGIO)) { pending |= SIGIO_MASK; return; } @@ -67,7 +67,7 @@ void alarm_handler(int sig, struct sigco int enabled; enabled = signals_enabled; - if (!signals_enabled) { + if (!(enabled & SIGVTALRM_MASK)) { pending |= SIGVTALRM_MASK; return; } @@ -203,7 +203,7 @@ void unblock_signals(void) { int save_pending; - if (signals_enabled == 1) + if (signals_enabled == (SIGIO_MASK | SIGVTALRM_MASK)) return; /* @@ -216,7 +216,7 @@ void unblock_signals(void) * Save and reset save_pending after enabling signals. This * way, pending won't be changed while we're reading it. */ - signals_enabled = 1; + signals_enabled = SIGIO_MASK | SIGVTALRM_MASK; /* * Setting signals_enabled and reading pending must