Lines Matching refs:sig

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