Lines Matching refs:sig

123 psignal(proc_t *p, int sig)
126 sigtoproc(p, NULL, sig);
134 tsignal(kthread_t *t, int sig)
139 sigtoproc(p, t, sig);
144 signal_is_blocked(kthread_t *t, int sig)
146 return (sigismember(&t->t_hold, sig) ||
147 (schedctl_sigblock(t) && !sigismember(&cantmask, sig)));
162 sig_discardable(proc_t *p, int sig)
167 (sigismember(&p->p_ignore, sig) && /* signal is ignored */
169 !tracing(p, sig) && /* and no /proc tracing */
170 !signal_is_blocked(t, sig) && /* and signal not blocked */
171 !sigismember(&t->t_sigwait, sig))); /* and not being accepted */
186 eat_signal(kthread_t *t, int sig)
194 if (!signal_is_blocked(t, sig)) {
199 } else if (t->t_state == TS_STOPPED && sig == SIGKILL &&
224 sigtoproc(proc_t *p, kthread_t *t, int sig)
233 if (sig <= 0 || sig >= NSIG || (p->p_flag & SSYS))
241 if (sig == SIGKILL) {
244 } else if (sig == SIGCONT) {
278 } else if (sigismember(&stopdefault, sig)) {
285 if (PTOU(p)->u_signal[sig-1] == SIG_DFL &&
286 (sig == SIGSTOP || !p->p_pgidp->pid_pgorphaned))
300 if (sig_discardable(p, sig)) {
302 proc_t *, p, int, sig);
310 sigaddset(&t->t_sig, sig);
312 sigaddset(&t->t_extsig, sig);
314 (void) eat_signal(t, sig);
316 DTRACE_PROC2(signal__send, kthread_t *, t, int, sig);
320 sigfd_pollwake_cb)(p, sig);
333 sigaddset(&p->p_sig, sig);
335 sigaddset(&p->p_extsig, sig);
338 if (eat_signal(tt, sig) && sig != SIGKILL) {
349 if (sig == SIGKILL && p->p_stat != SIDL &&
359 DTRACE_PROC2(signal__send, kthread_t *, tt, int, sig);
363 sigfd_pollwake_cb)(p, sig);
368 isjobstop(int sig)
374 if (PTOU(curproc)->u_signal[sig-1] == SIG_DFL &&
375 sigismember(&stopdefault, sig)) {
381 (sig == SIGSTOP || !p->p_pgidp->pid_pgorphaned) &&
385 stop(PR_JOBCONTROL, sig);
494 int sig;
496 for (sig = 1; sig < NSIG; sig++) {
497 if (sigismember(&set, sig) &&
498 (tracing(p, sig) ||
499 sigismember(&t->t_sigwait, sig) ||
500 !sigismember(&p->p_ignore, sig))) {
506 PTOU(p)->u_signal[sig-1] != SIG_DFL ||
507 !sigismember(&stopdefault, sig))
519 int sig = 0, ext = 0;
561 lwp->lwp_cursig = sig = SIGKILL;
577 sig = 0;
590 if ((sig = lwp->lwp_cursig) != 0) {
654 if ((sig = lwp->lwp_cursig) != 0) {
658 if (sigismember(&t->t_sigwait, sig) ||
659 (!sigismember(&p->p_ignore, sig) &&
660 !isjobstop(sig))) {
662 sig = SIGKILL;
665 lwp->lwp_cursig = (uchar_t)sig;
707 if ((sig = fsig(&t->t_sig, t)) != 0) {
709 if (tracing(p, sig) ||
710 sigismember(&t->t_sigwait, sig) ||
711 !sigismember(&p->p_ignore, sig)) {
712 if (sigismember(&t->t_extsig, sig))
716 sigdelset(&t->t_sig, sig);
717 sigdelset(&t->t_extsig, sig);
718 sigdelq(p, t, sig);
719 } else if ((sig = fsig(&p->p_sig, t)) != 0) {
720 if (sig == SIGCLD)
723 if (tracing(p, sig) ||
724 sigismember(&t->t_sigwait, sig) ||
725 !sigismember(&p->p_ignore, sig)) {
726 if (sigismember(&p->p_extsig, sig))
730 sigdelset(&p->p_sig, sig);
731 sigdelset(&p->p_extsig, sig);
732 sigdelq(p, NULL, sig);
739 if (sig == 0) { /* no signal was found */
742 sig = SIGKILL;
771 lwp->lwp_cursig = (uchar_t)sig;
775 sigdeq(p, toproc ? NULL : t, sig, &lwp->lwp_curinfo);
777 if (tracing(p, sig))
778 stop(PR_SIGNALLED, sig);
795 if (sig != 0)
807 sig = lwp->lwp_cursig;
810 return (sig != 0);
1029 int sig;
1031 if ((sig = p->p_stopsig) == 0)
1032 p->p_stopsig = (uchar_t)(sig = what);
1043 p->p_wdata = sig;
1286 int sig, rc, code, ext;
1301 sig = lwp->lwp_cursig;
1304 ASSERT(sig < NSIG);
1311 if (sig == 0) {
1323 func = PTOU(curproc)->u_signal[sig-1];
1330 if (sigismember(&p->p_ignore, sig) ||
1331 (func == SIG_DFL && sigismember(&stopdefault, sig))) {
1352 } else if (sig == SIGKILL && p->p_killsqp) {
1373 DTRACE_PROC3(signal__handle, int, sig, k_siginfo_t *,
1397 if (sigismember(&p->p_siginfo, sig)) {
1405 if (sig == SIGCANCEL &&
1409 } else if (sig == SIGPROF && sip->si_signo == SIGPROF &&
1414 sip->si_signo = sig;
1423 sigorset(&t->t_hold, &PTOU(curproc)->u_sigmask[sig-1]);
1424 if (!sigismember(&PTOU(curproc)->u_signodefer, sig))
1425 sigaddset(&t->t_hold, sig);
1426 if (sigismember(&PTOU(curproc)->u_sigresethand, sig))
1427 setsigact(sig, SIG_DFL, &nullsmask, 0);
1429 DTRACE_PROC3(signal__handle, int, sig, k_siginfo_t *,
1443 rc = sendsig(sig, sip, func);
1446 rc = sendsig32(sig, sip, func);
1450 sig = lwp->lwp_cursig = SIGSEGV;
1456 if (sigismember(&coredefault, sig)) {
1469 sig = SIGKILL;
1473 audit_core_start(sig);
1474 if (core(sig, ext) == 0)
1491 contract_process_sig(p->p_ct_process, p, sig, pid, ctid,
1495 exit(code, sig);
1563 setsigact(int sig, void (*disp)(), const k_sigset_t *mask, int flags)
1570 PTOU(curproc)->u_signal[sig - 1] = disp;
1580 sigaddset(&p->p_siginfo, sig);
1582 sigdelset(&p->p_siginfo, sig);
1585 sigdelset(&p->p_ignore, sig);
1586 PTOU(curproc)->u_sigmask[sig - 1] = *mask;
1587 if (!sigismember(&cantreset, sig)) {
1589 sigaddset(&PTOU(curproc)->u_sigresethand, sig);
1591 sigdelset(&PTOU(curproc)->u_sigresethand, sig);
1594 sigaddset(&PTOU(curproc)->u_signodefer, sig);
1596 sigdelset(&PTOU(curproc)->u_signodefer, sig);
1598 sigaddset(&PTOU(curproc)->u_sigrestart, sig);
1600 sigdelset(&PTOU(curproc)->u_sigrestart, sig);
1602 sigaddset(&PTOU(curproc)->u_sigonstack, sig);
1604 sigdelset(&PTOU(curproc)->u_sigonstack, sig);
1606 (disp == SIG_DFL && sigismember(&ignoredefault, sig))) {
1613 sigaddset(&p->p_ignore, sig);
1614 sigdelset(&p->p_sig, sig);
1615 sigdelset(&p->p_extsig, sig);
1616 sigdelq(p, NULL, sig);
1619 sigdelset(&t->t_sig, sig);
1620 sigdelset(&t->t_extsig, sig);
1621 sigdelq(p, t, sig);
1628 sigdelset(&p->p_ignore, sig);
1631 if (sig == SIGCLD) {
1671 int sig;
1675 for (sig = 1; sig < NSIG; sig++) {
1676 if (up->u_signal[sig - 1] != SIG_DFL &&
1677 up->u_signal[sig - 1] != SIG_IGN) {
1678 up->u_signal[sig - 1] = SIG_DFL;
1679 sigemptyset(&up->u_sigmask[sig - 1]);
1680 if (sigismember(&ignoredefault, sig)) {
1681 sigdelq(p, NULL, sig);
1682 sigdelq(p, t, sig);
1684 if (sig == SIGCLD)
1847 if (p->p_pid == 1 && pv->sig && sigismember(&cantmask, pv->sig))
1853 (pv->sig == SIGCONT && p->p_sessp == myprocp->p_sessp) ||
1856 if (pv->sig) {
1867 sqp->sq_info.si_signo = pv->sig;
1880 info.si_signo = pv->sig;
1918 sigdeq(proc_t *p, kthread_t *t, int sig, sigqueue_t **qpp)
1927 sigdelset(&t->t_sig, sig);
1928 sigdelset(&t->t_extsig, sig);
1931 sigdelset(&p->p_sig, sig);
1932 sigdelset(&p->p_extsig, sig);
1939 if (sqp->sq_info.si_signo == sig)
1947 if (sqp->sq_info.si_signo == sig) {
1949 sigaddset(&t->t_sig, sig);
1952 sigaddset(&p->p_sig, sig);
2017 sigdelq(proc_t *p, kthread_t *t, int sig)
2035 if (sig == 0 || sqp->sq_info.si_signo == sig) {
2058 int sig = sigqp->sq_info.si_signo;
2072 if (sig == SIGKILL) {
2084 ASSERT(sig >= 1 && sig < NSIG);
2090 sigismember(&p->p_siginfo, sig)) {
2095 if ((*psqp)->sq_info.si_signo == sig) {
2113 int sig = sigqp->sq_info.si_signo;
2116 ASSERT(sig >= 1 && sig < NSIG);
2118 if (sig_discardable(p, sig))
2123 sigtoproc(p, t, sig);
2133 int sig = infop->si_signo;
2136 ASSERT(sig >= 1 && sig < NSIG);
2144 if (!sig_discardable(p, sig) &&
2145 (sigismember(&p->p_siginfo, sig) ||
2147 (sig == SIGCLD && SI_FROMKERNEL(infop))) &&
2154 sigtoproc(p, t, sig);
2377 sigwillqueue(int sig, int code)
2379 if (sig >= 0 && sig < NSIG) {
2558 int sig = ip->si_signo;
2561 ASSERT(sig > 0 && sig < NSIG);
2574 (sigismember(&curthread->t_hold, sig) ||
2575 p->p_user.u_signal[sig-1] == SIG_IGN)) {
2576 sigdelset(&curthread->t_hold, sig);
2577 p->p_user.u_signal[sig-1] = SIG_DFL;
2578 sigdelset(&p->p_ignore, sig);