Lines Matching refs:t

134 tsignal(kthread_t *t, int sig)  in tsignal()  argument
136 proc_t *p = ttoproc(t); in tsignal()
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()
164 kthread_t *t = p->p_tlist; in sig_discardable() local
166 return (t == NULL || /* if zombie or ... */ in sig_discardable()
168 t->t_forw == t && /* and single-threaded */ 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
189 ASSERT(THREAD_LOCK_HELD(t)); in eat_signal()
194 if (!signal_is_blocked(t, sig)) { in eat_signal()
195 t->t_sig_check = 1; /* have thread do an issig */ in eat_signal()
196 if (ISWAKEABLE(t) || ISWAITING(t)) { in eat_signal()
197 setrun_locked(t); in eat_signal()
199 } else if (t->t_state == TS_STOPPED && sig == SIGKILL && in eat_signal()
200 !(ttoproc(t)->p_proc_flag & P_PR_LOCK)) { in eat_signal()
201 ttoproc(t)->p_stopsig = 0; in eat_signal()
202 t->t_dtrace_stop = 0; in eat_signal()
203 t->t_schedflag |= TS_XSTART | TS_PSTART; in eat_signal()
204 setrun_locked(t); in eat_signal()
205 } else if (t != curthread && t->t_state == TS_ONPROC) { in eat_signal()
206 aston(t); /* make it do issig promptly */ in eat_signal()
207 if (t->t_cpu != CPU) in eat_signal()
208 poke_cpu(t->t_cpu->cpu_id); in eat_signal()
210 } else if (t->t_state == TS_RUN) { in eat_signal()
224 sigtoproc(proc_t *p, kthread_t *t, int sig) in sigtoproc() argument
243 t = NULL; in sigtoproc()
306 if (t != NULL) { in sigtoproc()
310 sigaddset(&t->t_sig, sig); in sigtoproc()
312 sigaddset(&t->t_extsig, sig); in sigtoproc()
313 thread_lock(t); in sigtoproc()
314 (void) eat_signal(t, sig); in sigtoproc()
315 thread_unlock(t); in sigtoproc()
316 DTRACE_PROC2(signal__send, kthread_t *, t, int, sig); in sigtoproc()
445 kthread_t *t = curthread; in issig_justlooking() local
446 klwp_t *lwp = ttolwp(t); in issig_justlooking()
447 proc_t *p = ttoproc(t); in issig_justlooking()
459 if (t->t_dtrace_stop | t->t_dtrace_sig) in issig_justlooking()
473 if ((lwp->lwp_asleep && MUSTRETURN(p, t)) || in issig_justlooking()
477 (t->t_proc_flag & in issig_justlooking()
485 sigorset(&set, &t->t_sig); in issig_justlooking()
486 if (schedctl_sigblock(t)) /* all blockable signals blocked */ in issig_justlooking()
489 sigdiffset(&set, &t->t_hold); in issig_justlooking()
499 sigismember(&t->t_sigwait, sig) || in issig_justlooking()
520 kthread_t *t = curthread; in issig_forreal() local
521 klwp_t *lwp = ttolwp(t); in issig_forreal()
522 proc_t *p = ttoproc(t); in issig_forreal()
527 ASSERT(t->t_state == TS_ONPROC); in issig_forreal()
530 schedctl_finish_sigblock(t); in issig_forreal()
532 if (t->t_dtrace_stop | t->t_dtrace_sig) { in issig_forreal()
533 if (t->t_dtrace_stop) { in issig_forreal()
538 t->t_proc_flag |= TP_PRSTOP; in issig_forreal()
541 if (t->t_dtrace_sig != 0) { in issig_forreal()
550 info.si_signo = t->t_dtrace_sig; in issig_forreal()
555 t->t_dtrace_sig = 0; in issig_forreal()
563 t->t_sig_check = 1; in issig_forreal()
584 if ((t->t_proc_flag & TP_PAUSE) && !lwp->lwp_nostop) { in issig_forreal()
589 if (lwp->lwp_asleep && MUSTRETURN(p, t)) { in issig_forreal()
595 t->t_sig_check = 1; in issig_forreal()
606 if ((t->t_proc_flag & TP_CHKPT) && !lwp->lwp_nostop) { in issig_forreal()
620 (t->t_proc_flag & TP_HOLDLWP)) && !lwp->lwp_nostop) { in issig_forreal()
634 if ((t->t_proc_flag & TP_PRSTOP) && !lwp->lwp_nostop) in issig_forreal()
658 if (sigismember(&t->t_sigwait, sig) || in issig_forreal()
707 if ((sig = fsig(&t->t_sig, t)) != 0) { in issig_forreal()
710 sigismember(&t->t_sigwait, 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()
724 sigismember(&t->t_sigwait, sig) || in issig_forreal()
773 t->t_sig_check = 1; /* so post_syscall will see signal */ in issig_forreal()
775 sigdeq(p, toproc ? NULL : t, sig, &lwp->lwp_curinfo); in issig_forreal()
821 kthread_t *t; in jobstopped() local
825 if ((t = p->p_tlist) == NULL) in jobstopped()
829 thread_lock(t); in jobstopped()
831 if (!(t == curthread || t->t_state == TS_ZOMB || in jobstopped()
832 SUSPENDED(t)) && in jobstopped()
833 (t->t_state != TS_STOPPED || in jobstopped()
834 t->t_whystop != PR_JOBCONTROL)) { in jobstopped()
835 thread_unlock(t); in jobstopped()
838 thread_unlock(t); in jobstopped()
839 } while ((t = t->t_forw) != p->p_tlist); in jobstopped()
850 kthread_t *t = curthread; in stop() local
851 proc_t *p = ttoproc(t); in stop()
852 klwp_t *lwp = ttolwp(t); in stop()
873 sigismember(&t->t_sig, SIGKILL) || in stop()
875 (t->t_proc_flag & TP_LWPEXIT) || in stop()
878 t->t_proc_flag &= ~(TP_PRSTOP|TP_PRVSTOP); in stop()
894 schedctl_finish_sigblock(t); in stop()
895 t->t_proc_flag |= TP_STOPPING; /* must set before dropping p_lock */ in stop()
901 ASSERT(t->t_state == TS_ONPROC); in stop()
910 if (!(t->t_proc_flag & TP_CHKPT)) { in stop()
911 t->t_proc_flag &= ~TP_STOPPING; in stop()
914 t->t_proc_flag &= ~TP_CHKPT; in stop()
932 if (!(t->t_proc_flag & TP_PAUSE)) { in stop()
933 t->t_proc_flag &= ~TP_STOPPING; in stop()
938 if (!((t->t_proc_flag & TP_HOLDLWP) || in stop()
940 t->t_proc_flag &= ~TP_STOPPING; in stop()
950 t->t_proc_flag &= ~TP_STOPPING; in stop()
964 if ((why != PR_REQUESTED || t->t_dtrace_stop) && in stop()
968 for (tx = t->t_forw; tx != t; tx = tx->t_forw) { in stop()
1021 t->t_stoptime = stoptime; in stop()
1075 for (tx = t->t_forw; procstop && tx != t; tx = tx->t_forw) { in stop()
1126 lep = p->p_lwpdir[t->t_dslot].ld_entry; in stop()
1132 if (t == p->p_agenttp && in stop()
1133 (t->t_proc_flag & TP_PRSTOP) && in stop()
1141 if (!(t->t_proc_flag & TP_STOPPING)) { in stop()
1142 if (t->t_proc_flag & TP_PRSTOP) in stop()
1143 t->t_proc_flag |= TP_STOPPING; in stop()
1145 t->t_proc_flag &= ~(TP_PRSTOP|TP_PRVSTOP); in stop()
1162 --p->p_lwprcnt == 0 || (t->t_proc_flag & TP_HOLDLWP)) in stop()
1174 thread_lock(t); in stop()
1175 ASSERT((t->t_schedflag & TS_ALLSTART) == 0); in stop()
1176 t->t_schedflag |= flags; in stop()
1177 t->t_whystop = (short)why; in stop()
1178 t->t_whatstop = (short)what; in stop()
1179 CL_STOP(t, why, what); in stop()
1180 (void) new_mstate(t, LMS_STOPPED); in stop()
1181 thread_stop(t); /* set stop state and drop lock */ in stop()
1189 if (sigismember(&t->t_sig, SIGKILL) || in stop()
1191 (t->t_proc_flag & TP_LWPEXIT) || in stop()
1194 thread_lock(t); in stop()
1195 t->t_schedflag |= TS_XSTART | TS_PSTART; in stop()
1196 setrun_locked(t); in stop()
1197 thread_unlock_nopreempt(t); in stop()
1205 thread_lock(t); in stop()
1206 t->t_schedflag |= TS_XSTART; in stop()
1207 setrun_locked(t); in stop()
1208 thread_unlock_nopreempt(t); in stop()
1210 } else if (!(t->t_proc_flag & TP_STOPPING)) { in stop()
1214 thread_lock(t); in stop()
1215 t->t_schedflag |= TS_PSTART; in stop()
1216 setrun_locked(t); in stop()
1217 thread_unlock_nopreempt(t); in stop()
1221 t->t_proc_flag &= ~TP_STOPPING; in stop()
1282 kthread_t *t = curthread; in psig() local
1283 proc_t *p = ttoproc(t); in psig()
1284 klwp_t *lwp = ttolwp(t); in psig()
1294 schedctl_finish_sigblock(t); in psig()
1316 if (t->t_flag & T_TOMASK) { /* sigsuspend or pollsys */ in psig()
1317 t->t_flag &= ~T_TOMASK; in psig()
1318 t->t_hold = lwp->lwp_sigoldmask; in psig()
1338 if (t->t_flag & T_TOMASK) { /* sigsuspend or pollsys */ in psig()
1339 t->t_flag &= ~T_TOMASK; in psig()
1340 t->t_hold = lwp->lwp_sigoldmask; in psig()
1383 if (t->t_dtrace_on && dtrace_safe_defer_signal()) { in psig()
1407 t->t_sysnum != 0) in psig()
1410 t->t_rprof != NULL && t->t_rprof->rp_anystate) { in psig()
1419 if (t->t_flag & T_TOMASK) in psig()
1420 t->t_flag &= ~T_TOMASK; in psig()
1422 lwp->lwp_sigoldmask = t->t_hold; in psig()
1423 sigorset(&t->t_hold, &PTOU(curproc)->u_sigmask[sig-1]); in psig()
1425 sigaddset(&t->t_hold, sig); in psig()
1502 fsig(k_sigset_t *ssp, kthread_t *t) in fsig() argument
1504 proc_t *p = ttoproc(t); in fsig()
1519 sigdiffset(&temp, &t->t_hold); in fsig()
1532 if (ttolwp(t)->lwp_nostop) { in fsig()
1566 kthread_t *t; in setsigact() local
1617 t = p->p_tlist; 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()
1622 } while ((t = t->t_forw) != p->p_tlist); in setsigact()
1669 kthread_t *t = p->p_tlist; in sigdefault() local
1682 sigdelq(p, t, sig); in sigdefault()
1693 sigdiffset(&t->t_sig, &ignoredefault); in sigdefault()
1694 sigdiffset(&t->t_extsig, &ignoredefault); in sigdefault()
1822 sigqsend(int cmd, proc_t *p, kthread_t *t, sigqueue_t *sigqp) in sigqsend() argument
1834 sigaddqa(p, t, sigqp); in sigqsend()
1918 sigdeq(proc_t *p, kthread_t *t, int sig, sigqueue_t **qpp) in sigdeq() argument
1926 if (t != NULL) { in sigdeq()
1927 sigdelset(&t->t_sig, sig); in sigdeq()
1928 sigdelset(&t->t_extsig, sig); in sigdeq()
1929 psqp = &t->t_sigqueue; in sigdeq()
1948 if (t != (kthread_t *)NULL) { in sigdeq()
1949 sigaddset(&t->t_sig, sig); in sigdeq()
1950 t->t_sig_check = 1; in sigdeq()
2017 sigdelq(proc_t *p, kthread_t *t, int sig) in sigdelq() argument
2028 if (t != (kthread_t *)NULL) in sigdelq()
2029 psqp = &t->t_sigqueue; in sigdelq()
2055 sigaddqins(proc_t *p, kthread_t *t, sigqueue_t *sigqp) in sigaddqins() argument
2085 if (t != NULL) /* directed to a thread */ in sigaddqins()
2086 psqp = &t->t_sigqueue; in sigaddqins()
2111 sigaddqa(proc_t *p, kthread_t *t, sigqueue_t *sigqp) in sigaddqa() argument
2121 sigaddqins(p, t, sigqp); in sigaddqa()
2123 sigtoproc(p, t, sig); in sigaddqa()
2130 sigaddq(proc_t *p, kthread_t *t, k_siginfo_t *infop, int km_flags) in sigaddq() argument
2152 sigaddqins(p, t, sqp); in sigaddq()
2154 sigtoproc(p, t, sig); in sigaddq()
2216 sigcheck(proc_t *p, kthread_t *t) in sigcheck() argument
2218 sc_shared_t *tdp = t->t_schedctl; in sigcheck()
2228 return ((p->p_sig.__sigbits[0] | t->t_sig.__sigbits[0]) & in sigcheck()
2236 return (((p->p_sig.__sigbits[0] | t->t_sig.__sigbits[0]) & in sigcheck()
2237 ~t->t_hold.__sigbits[0]) | in sigcheck()
2238 ((p->p_sig.__sigbits[1] | t->t_sig.__sigbits[1]) & in sigcheck()
2239 ~t->t_hold.__sigbits[1]) | in sigcheck()
2240 (((p->p_sig.__sigbits[2] | t->t_sig.__sigbits[2]) & in sigcheck()
2241 ~t->t_hold.__sigbits[2]) & FILLSET2)); in sigcheck()
2592 kthread_t *t = curthread; in realsigprof_slow() local
2593 proc_t *p = ttoproc(t); in realsigprof_slow()
2594 klwp_t *lwp = ttolwp(t); in realsigprof_slow()
2602 bzero(t->t_rprof, sizeof (*t->t_rprof)); in realsigprof_slow()
2606 if (sigismember(&t->t_hold, SIGPROF)) { in realsigprof_slow()
2620 sigtoproc(p, t, SIGPROF); in realsigprof_slow()
2626 bzero(t->t_rprof, sizeof (*t->t_rprof)); in realsigprof_slow()
2637 kthread_t *t = curthread; in realsigprof_fast() local
2638 proc_t *p = ttoproc(t); in realsigprof_fast()
2639 klwp_t *lwp = ttolwp(t); in realsigprof_fast()
2652 bzero(t->t_rprof, sizeof (*t->t_rprof)); in realsigprof_fast()
2657 sigismember(&t->t_hold, SIGPROF)) { in realsigprof_fast()
2670 if (t->t_flag & T_TOMASK) in realsigprof_fast()
2671 t->t_flag &= ~T_TOMASK; in realsigprof_fast()
2673 lwp->lwp_sigoldmask = t->t_hold; in realsigprof_fast()
2674 sigorset(&t->t_hold, &PTOU(p)->u_sigmask[SIGPROF - 1]); in realsigprof_fast()
2676 sigaddset(&t->t_hold, SIGPROF); in realsigprof_fast()
2686 bzero(t->t_rprof, sizeof (*t->t_rprof)); in realsigprof_fast()
2715 kthread_t *t = curthread; in realsigprof() local
2716 proc_t *p = ttoproc(t); in realsigprof()
2718 if (t->t_rprof->rp_anystate == 0) in realsigprof()
2721 schedctl_finish_sigblock(t); in realsigprof()