static void do_signal()

in kernel/signal.c [279:305]


static void do_signal(struct pt_regs *regs, int in_syscall)
{
	struct ksignal ksig;

#ifdef DEBUG_SIG
	pr_info("do signal: %p %d\n", regs, in_syscall);
	pr_info("do signal2: %lx %lx %ld [%lx]\n", regs->pc, regs->r1,
			regs->r12, read_thread_flags());
#endif

	if (get_signal(&ksig)) {
		/* Whee! Actually deliver the signal. */
		if (in_syscall)
			handle_restart(regs, &ksig.ka, 1);
		handle_signal(&ksig, regs);
		return;
	}

	if (in_syscall)
		handle_restart(regs, NULL, 0);

	/*
	 * If there's no signal to deliver, we just put the saved sigmask
	 * back.
	 */
	restore_saved_sigmask();
}