Lines Matching defs:signo
331 int signo, prop;
338 for (signo = 1; signo < NSIG; signo++) {
339 prop = sigprop[signo];
341 sigaddset(&contsigmask, signo);
343 sigaddset(&stopsigmask, signo);
344 if (prop & SA_STOP && signo != SIGSTOP)
345 sigaddset(&vforksigmask, signo);
347 sigaddset(&sigcantmask, signo);
348 if (prop & SA_IGNORE && signo != SIGCONT)
349 sigaddset(&p->p_sigctx.ps_sigignore, signo);
350 sigemptyset(&SIGACTION_PS(ps, signo).sa_mask);
351 SIGACTION_PS(ps, signo).sa_flags = SA_RESTART;
382 int signo, prop;
400 for (signo = 1; signo < NSIG; signo++) {
401 if (sigismember(&p->p_sigctx.ps_sigcatch, signo)) {
402 prop = sigprop[signo];
406 signo);
407 sigaddset(&tset, signo);
409 SIGACTION_PS(ps, signo).sa_handler = SIG_DFL;
411 sigemptyset(&SIGACTION_PS(ps, signo).sa_mask);
412 SIGACTION_PS(ps, signo).sa_flags = SA_RESTART;
517 siggetinfo(sigpend_t *sp, ksiginfo_t *out, int signo)
527 if (ksi->ksi_signo != signo)
548 out->ksi_info._signo = signo;
562 sigget(sigpend_t *sp, ksiginfo_t *out, int signo, const sigset_t *mask)
571 /* Construct mask from signo, and 'mask'. */
572 if (signo == 0) {
580 if ((signo = firstsig(&tset)) == 0)
583 KASSERT(sigismember(&sp->sp_set, signo));
586 sigdelset(&sp->sp_set, signo);
588 count = siggetinfo(sp, out, signo);
590 sigaddset(&sp->sp_set, signo);
591 return signo;
699 sigispending(struct lwp *l, int signo)
711 if (signo == 0) {
714 return sigismember(&tset, signo) ? signo : 0;
794 int signo = ksi->ksi_signo;
811 KAUTH_PROCESS_SIGNAL, p, KAUTH_ARG(signo), NULL,
814 if (signo)
833 p, KAUTH_ARG(signo), NULL, NULL) == 0) {
835 if (signo && P_ZOMBIE(p) == 0)
886 int signo = ksi->ksi_signo;
926 action = SIGACTION_PS(ps, signo).sa_handler;
932 p->p_xsig = signo;
936 sigswitch(0, signo, true);
940 p->p_emul->e_ktrpsig(signo, action, mask, ksi);
942 ktrpsig(signo, action, mask, ksi);
947 const bool caught = sigismember(&p->p_sigctx.ps_sigcatch, signo);
948 const bool masked = sigismember(mask, signo);
957 p->p_emul->e_ktrpsig(signo, action, mask, ksi);
959 ktrpsig(signo, action, mask, ksi);
972 sigdelset(mask, signo);
973 sigdelset(&p->p_sigctx.ps_sigcatch, signo);
974 sigdelset(&p->p_sigctx.ps_sigignore, signo);
975 sigdelset(&SIGACTION_PS(ps, signo).sa_mask, signo);
976 SIGACTION_PS(ps, signo).sa_handler = SIG_DFL;
1022 psignal(struct proc *p, int signo)
1030 ksi.ksi_signo = signo;
1226 int signo;
1230 signo = ksi->ksi_signo;
1240 !sigismember(&l->l_sigwaitset, signo))
1248 if (sigismember(&l->l_sigwaitset, signo))
1280 int prop, signo = ksi->ksi_signo;
1293 KASSERT(signo > 0);
1294 KASSERT(signo < NSIG);
1306 KNOTE(&p->p_klist, NOTE_SIGNAL | signo);
1312 prop = sigprop[signo];
1316 !sigismember(&p->p_sigctx.ps_sigpass, signo);
1341 if (sigismember(&p->p_sigctx.ps_sigignore, signo))
1344 else if (sigismember(&p->p_sigctx.ps_sigcatch, signo))
1406 signo = -1;
1432 if (traced && signo != SIGKILL) {
1435 if ((prop & SA_CONT) != 0 || signo == SIGKILL) {
1445 KASSERT(signo == SIGKILL);
1460 KASSERT(signo != SIGKILL);
1493 signo = -1;
1500 if (signo == -1)
1503 SDT_PROBE(proc, kernel, , signal__discard, l, p, signo, 0, 0);
1575 const int signo = SIGTRAP;
1643 ksi.ksi_signo = signo;
1652 action = SIGACTION_PS(ps, signo).sa_handler;
1655 p->p_xsig = signo;
1660 sigswitch(0, signo, true);
1671 p->p_emul->e_ktrpsig(signo, action, mask, &ksi);
1673 ktrpsig(signo, action, mask, &ksi);
1695 sigswitch(int ppmask, int signo, bool proc_lock_held)
1716 KASSERT(signo != 0);
1717 proc_stop(p, signo);
1785 int signo;
1805 signo = p->p_xsig;
1807 if (sigismember(&l->l_sigmask, signo)) {
1808 signo = 0;
1810 return signo;
1828 int siglwp, signo, prop;
1835 signo = 0;
1842 if (signo != 0) {
1843 (void)sigget(sp, NULL, signo, NULL);
1856 signo = sigchecktrace();
1858 signo = 0;
1868 if (signo == 0) {
1876 if ((signo = firstsig(&ss)) == 0) {
1884 if ((signo = firstsig(&ss)) == 0) {
1899 !sigismember(&p->p_sigctx.ps_sigpass, signo);
1918 p->p_sigctx.ps_info._signo = signo;
1927 if (sigismember(&p->p_sigctx.ps_sigignore, signo) &&
1938 if (traced && signo != SIGKILL &&
1947 sigdelset(&sp->sp_set, signo);
1948 p->p_xsig = signo;
1951 sigswitch(0, signo, false);
1955 if ((signo = sigchecktrace()) == 0)
1962 prop = sigprop[signo];
1967 switch ((long)SIGACTION(p, signo).sa_handler) {
1979 p->p_pid, signo);
2004 (void)sigget(sp, NULL, signo, NULL);
2005 p->p_xsig = signo;
2007 signo = 0;
2043 return signo;
2051 postsig(int signo)
2065 KASSERT(signo > 0);
2084 action = SIGACTION_PS(ps, signo).sa_handler;
2089 signo == p->p_sigctx.ps_info._signo) {
2095 if (!siggetinfo(&l->l_sigpend, &ksi, signo))
2096 (void)siggetinfo(&p->p_sigpend, &ksi, signo);
2099 sigget(l->l_sigpendset, &ksi, signo, NULL);
2104 p->p_emul->e_ktrpsig(signo, action,
2107 ktrpsig(signo, action, returnmask, &ksi);
2111 SDT_PROBE(proc, kernel, , signal__handle, signo, &ksi, action, 0, 0);
2118 sigexit(l, signo);
2126 if (action == SIG_IGN || sigismember(&l->l_sigmask, signo))
2176 sendsig_reset(struct lwp *l, int signo)
2187 sigplusset(&SIGACTION_PS(ps, signo).sa_mask, &l->l_sigmask);
2188 if (SIGACTION_PS(ps, signo).sa_flags & SA_RESETHAND) {
2189 sigdelset(&p->p_sigctx.ps_sigcatch, signo);
2190 if (signo != SIGCONT && sigprop[signo] & SA_IGNORE)
2191 sigaddset(&p->p_sigctx.ps_sigignore, signo);
2192 SIGACTION_PS(ps, signo).sa_handler = SIG_DFL;
2220 sigexit(struct lwp *l, int signo)
2260 if ((docore = (sigprop[signo] & SA_CORE)) != 0) {
2290 exitsig = signo;
2293 p->p_sigctx.ps_info._signo = signo;
2306 p->p_comm, uid, signo, error);
2309 p->p_comm, uid, signo);
2378 proc_stop(struct proc *p, int signo)
2408 sigpost(l, SIG_DFL, SA_STOP, signo);
2541 const int signo = SIGTRAP;
2552 ksi.ksi_signo = signo;
2616 action = SIGACTION_PS(ps, signo).sa_handler;
2619 p->p_xsig = signo;
2622 sigswitch(0, signo, false);
2626 p->p_emul->e_ktrpsig(signo, action, mask, &ksi);
2628 ktrpsig(signo, action, mask, &ksi);