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()
216 sig--; in hard_handler()
222 * Again, pending comes back with a mask of signals in hard_handler()
224 * is non-zero, we just go back, set up the stack in hard_handler()
240 /* block irq ones */ in set_handler()
250 flags |= SA_RESTART; /* if it's an irq signal */ in set_handler()
255 panic("sigaction failed - errno = %d\n", errno); in set_handler()
260 panic("sigprocmask failed - errno = %d\n", errno); in set_handler()
275 return -errno; in change_sig()
284 * This must return with signals disabled, so this barrier in block_signals()
305 * We loop because the IRQ handler returns with interrupts off. So, in unblock_signals()
306 * interrupts may have arrived and we need to re-enable them and in unblock_signals()
311 * Save and reset save_pending after enabling signals. This in unblock_signals()
326 * We have pending interrupts, so disable signals, as the in unblock_signals()
331 * pending signals will mess up the tracing state. in unblock_signals()
357 /* Re-enable signals and trace that we're doing so. */ in unblock_signals()
397 * it isn't a read-modify-write with a signal in mark_sigio_pending()
402 * time-travel=ext simulation mode, in which case in mark_sigio_pending()
421 panic("unblocking signals while not blocked"); in unblock_signals_hard()
423 if (--signals_blocked) in unblock_signals_hard()
438 * pending signals, we can get out of the inner call with the real in unblock_signals_hard()
441 * the outermost call - 'unblocking' serves as an ownership for the in unblock_signals_hard()
450 /* signals are enabled so we can touch this */ in unblock_signals_hard()
460 * we need to run time-travel handlers even in unblock_signals_hard()
469 * the decrement, not during a read-modify-write: in unblock_signals_hard()
470 * - If it happens before, it can increment it and we'll in unblock_signals_hard()
472 * - If it happens after it'll see 0 for both signals_blocked in unblock_signals_hard()