SIGCHLD
DEFINE(_SIGCHLD, SIGCHLD);
#define SIGCLD SIGCHLD /* Same as SIGCHLD (System V). */
DEFINE(_SIGCHLD, SIGCHLD);
.exit_signal = SIGCHLD,
.exit_signal = SIGCHLD,
sigaddset(&sigset, SIGCHLD);
set_handler(SIGCHLD);
if (!enabled && (sig == SIGCHLD)) {
[SIGCHLD] = sig_handler,
sigaddset(&action.sa_mask, SIGCHLD);
[SIGCHLD] = sigchld_handler,
sigchld_handler(SIGCHLD, NULL, ®s, NULL);
if ((sig != SIGIO) && (sig != SIGWINCH) && (sig != SIGCHLD))
CLONE_VFORK | CLONE_VM | SIGCHLD,
if (from->si_signo == SIGCHLD) {
tsk->exit_signal = SIGCHLD;
tsk->exit_signal = SIGCHLD;
rt_sigmask(SIGCONT) | rt_sigmask(SIGCHLD) | \
rt_sigmask(SIGTRAP) | rt_sigmask(SIGCHLD) | \
signo = SIGCHLD;
if ((p->exit_signal != SIGCHLD) ^ !!(wo->wo_flags & __WCLONE))
signo = SIGCHLD;
signo = SIGCHLD;
p->exit_signal = SIGCHLD;
tsk->exit_signal : SIGCHLD;
else if (args->exit_signal != SIGCHLD)
.exit_signal = SIGCHLD,
.exit_signal = SIGCHLD,
CLONE_FS | CLONE_FILES | SIGCHLD);
me->sighand->action[SIGCHLD - 1].sa.sa_handler = SIG_IGN;
ret = (sigh->action[SIGCHLD-1].sa.sa_handler == SIG_IGN) ||
(sigh->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDWAIT);
if (sig != SIGCHLD) {
sig = SIGCHLD;
if (!tsk->ptrace && sig == SIGCHLD &&
(psig->action[SIGCHLD-1].sa.sa_handler == SIG_IGN ||
(psig->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDWAIT))) {
if (psig->action[SIGCHLD-1].sa.sa_handler == SIG_IGN)
info.si_signo = SIGCHLD;
if (sighand->action[SIGCHLD-1].sa.sa_handler != SIG_IGN &&
!(sighand->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDSTOP))
send_signal_locked(SIGCHLD, &info, parent, PIDTYPE_TGID);
[SIGCHLD] = { NSIGCHLD, SIL_CHLD },
kernel_sigaction(SIGCHLD, SIG_DFL);
pid = user_mode_thread(call_usermodehelper_exec_async, sub_info, SIGCHLD);
kernel_sigaction(SIGCHLD, SIG_IGN);
CLONE_PARENT | SIGCHLD);
return __clone2(do_child, stack, stack_size, flags | SIGCHLD, NULL, pidfd);
return clone(do_child, stack + stack_size, flags | SIGCHLD, NULL, pidfd);
[SIGCHLD] = 17, /* 20, 17, 18. SIGCHLD -, -, 18 */
case SIGCHLD:
if (sigaddset(&sigset, SIGCHLD))
return my_syscall5(__NR_clone, 0, SIGCHLD, 0, 0, 0);
return my_syscall5(__NR_clone, 0, CLONE_VM | CLONE_VFORK | SIGCHLD, 0, 0, 0);
return my_syscall5(__NR_clone, SIGCHLD, 0, 0, 0, 0);
return my_syscall5(__NR_clone, CLONE_VM | CLONE_VFORK | SIGCHLD, 0, 0, 0, 0);
sigaddset(&mask, SIGCHLD);
signal(SIGCHLD, sig_handler);
signal(SIGCHLD, sighandler);
signal(SIGCHLD, sig_handler);
if (sig == SIGCHLD)
signal(SIGCHLD, sighandler);
signal(SIGCHLD, sighandler);
sigaddset(&set, SIGCHLD);
signal(SIGCHLD, skip_signal);
sigaction(SIGCHLD, &sigchld_act, NULL);
signal(SIGCHLD, sig_handler);
sigaddset(&sig_set, SIGCHLD);
ret = sigaction(SIGCHLD, &sa, NULL);
ret = sigaction(SIGCHLD, &sa, NULL);
cpid = clone(do_sleep, child_stack + STACK_SIZE, CLONE_FILES | SIGCHLD, fexit_skel);
CLONE_NEWPID | SIGCHLD, arg);
CLONE_NEWPID | SIGCHLD, (void *)prog_name);
CLONE_VM|SIGCHLD, child);
.exit_signal = SIGCHLD,
CLONE_NEWCGROUP | CLONE_FILES | CLONE_VM | SIGCHLD,
.flags = SIGCHLD,
.exit_signal = SIGCHLD,
.exit_signal = SIGCHLD,
args.exit_signal = SIGCHLD;
.exit_signal = SIGCHLD,
.exit_signal = SIGCHLD,
.exit_signal = SIGCHLD,
.exit_signal = SIGCHLD,
.exit_signal = SIGCHLD,
.exit_signal = SIGCHLD,
.exit_signal = SIGCHLD,
pid = clone(child, ca.stack_ptr, CLONE_NEWUSER | CLONE_NEWPID | SIGCHLD, NULL);
return __clone2(fn, stack, __STACK_SIZE, flags | SIGCHLD, arg, NULL);
return clone(fn, stack + __STACK_SIZE, flags | SIGCHLD, arg, NULL);
pid = clone(fn, stack, CLONE_VM | SIGCHLD, arg);
SIGCHLD | CLONE_FILES | CLONE_FS | CLONE_VM,
pid = clone(fn, stack + STACK_SIZE, SIGCHLD | flags, arg);
signal(SIGCHLD, &sig_chld);
return __clone2(fn, stack, __STACK_SIZE, flags | SIGCHLD, arg, NULL);
return clone(fn, stack + __STACK_SIZE, flags | SIGCHLD, arg, NULL);
return __clone2(fn, stack, __STACK_SIZE, flags | SIGCHLD, arg, NULL);
return clone(fn, stack + __STACK_SIZE, flags | SIGCHLD, arg, NULL);
ASSERT_NE(signal(SIGCHLD, SIG_IGN), SIG_ERR);
ASSERT_NE(signal(SIGCHLD, SIG_IGN), SIG_ERR);
ret = __clone2(fn, stack, __STACK_SIZE, flags | SIGCHLD, arg);
ret = clone(fn, stack + __STACK_SIZE, flags | SIGCHLD, arg);
.exit_signal = SIGCHLD,
static int flags = CLONE_PIDFD | CLONE_NEWPID | CLONE_NEWNS | SIGCHLD;
return __clone2(fn, stack, stack_size, flags | SIGCHLD, NULL, pidfd);
return clone(fn, stack + stack_size, flags | SIGCHLD, NULL, pidfd);
ASSERT_EQ(info.si_signo, SIGCHLD);
ASSERT_EQ(info.si_signo, SIGCHLD);
ASSERT_EQ(info.si_signo, SIGCHLD);
ASSERT_EQ(info.si_signo, SIGCHLD);
.exit_signal = SIGCHLD,
ASSERT_EQ(info.si_signo, SIGCHLD);
ASSERT_EQ(info.si_signo, SIGCHLD);
.exit_signal = SIGCHLD,
ASSERT_EQ(info.si_signo, SIGCHLD);
.exit_signal = SIGCHLD,
CLONE_VM | SIGCHLD, NULL);
SIGCHLD, &proc[i]);
signal(SIGCHLD, SIG_IGN);
signal(SIGCHLD, SIG_DFL);
.exit_signal = SIGCHLD,
.exit_signal = SIGCHLD,
.exit_signal = SIGCHLD,
sigaddset(&mask, SIGCHLD);
CLONE_VM | SIGCHLD, &self->check));
SIGCHLD | CLONE_FILES | CLONE_FS | CLONE_VM, NULL);
SIGCHLD | CLONE_FILES | CLONE_FS | CLONE_VM, test);
sigaddset(&mask, SIGCHLD);
sigaction(SIGCHLD, &act, NULL);