Lines Matching +full:irq +full:- +full:signals
1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (C) 2015 Anton Ivanov (aivanov@{brocade.com,kot-begemot.co.uk})
6 * Copyright (C) 2004 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
16 #include <as-layout.h>
46 /* enable signals if sig isn't IRQ signal */ in sig_handler_common()
56 * These are the asynchronous signals. SIGPROF is excluded because we want to
57 * be able to profile all of UML, not just the non-critical sections. If
58 * profiling is not thread-safe, then that is not my problem. We can disable
91 * In TT_MODE_EXTERNAL, need to still call time-travel in sig_handler()
94 * Note we won't get here if signals are hard-blocked in sig_handler()
95 * (which is handled above), in that case the hard- in sig_handler()
192 mcontext_t *mc = &uc->uc_mcontext; in hard_handler()
205 /* block irq ones */ in set_handler()
215 flags |= SA_RESTART; /* if it's an irq signal */ in set_handler()
220 panic("sigaction failed - errno = %d\n", errno); in set_handler()
225 panic("sigprocmask failed - errno = %d\n", errno); in set_handler()
240 return -errno; in change_sig()
249 * This must return with signals disabled, so this barrier in block_signals()
270 * We loop because the IRQ handler returns with interrupts off. So, in unblock_signals()
271 * interrupts may have arrived and we need to re-enable them and in unblock_signals()
276 * Save and reset save_pending after enabling signals. This in unblock_signals()
291 * We have pending interrupts, so disable signals, as the in unblock_signals()
296 * pending signals will mess up the tracing state. in unblock_signals()
322 /* Re-enable signals and trace that we're doing so. */ in unblock_signals()
362 * it isn't a read-modify-write with a signal in mark_sigio_pending()
367 * time-travel=ext simulation mode, in which case in mark_sigio_pending()
386 panic("unblocking signals while not blocked"); in unblock_signals_hard()
388 if (--signals_blocked) in unblock_signals_hard()
403 * pending signals, we can get out of the inner call with the real in unblock_signals_hard()
406 * the outermost call - 'unblocking' serves as an ownership for the in unblock_signals_hard()
415 /* signals are enabled so we can touch this */ in unblock_signals_hard()
425 * we need to run time-travel handlers even in unblock_signals_hard()
434 * the decrement, not during a read-modify-write: in unblock_signals_hard()
435 * - If it happens before, it can increment it and we'll in unblock_signals_hard()
437 * - If it happens after it'll see 0 for both signals_blocked in unblock_signals_hard()