if (KTRPOINT(p, KTR_PSIG))
if (KTRPOINT(p, KTR_PSIG)) { siginfo_t si;  null_sigval.sival_ptr = 0; initsiginfo(&si, signum, 0, SI_USER, null_sigval);
postsig(signum)	register int signum;{	struct proc *p = curproc;	struct sigacts *ps = p->p_sigacts;	sig_t action;	u_long code;	int mask, returnmask;	union sigval null_sigval;	int s;#ifdef DIAGNOSTIC	if (signum == 0)		panic("postsig");#endif	mask = sigmask(signum);	p->p_siglist &= ~mask;	action = ps->ps_sigact[signum];#ifdef KTRACE	if (KTRPOINT(p, KTR_PSIG))		ktrpsig(p, signum, action, ps->ps_flags & SAS_OLDMASK ?		    ps->ps_oldmask : p->p_sigmask, 0);#endif	if (action == SIG_DFL) {		/*		 * Default action, where the default is to kill		 * the process.  (Other cases were ignored above.)		 */		sigexit(p, signum);		/* NOTREACHED */	} else {		/*		 * If we get here, the signal must be caught.		 */#ifdef DIAGNOSTIC		if (action == SIG_IGN || (p->p_sigmask & mask))			panic("postsig action");#endif		/*		 * Set the new mask value and also defer further		 * occurences of this signal.		 *		 * Special case: user has done a sigpause.  Here the		 * current mask is not of interest, but rather the		 * mask from before the sigpause is what we want		 * restored after the signal processing is completed.		 */		s = splhigh();		if (ps->ps_flags & SAS_OLDMASK) {			returnmask = ps->ps_oldmask;			ps->ps_flags &= ~SAS_OLDMASK;		} else			returnmask = p->p_sigmask;		p->p_sigmask |= ps->ps_catchmask[signum];		if ((ps->ps_sigreset & mask) != 0) {			p->p_sigcatch &= ~mask;			if (signum != SIGCONT && sigprop[signum] & SA_IGNORE)				p->p_sigignore |= mask;			ps->ps_sigact[signum] = SIG_DFL;		}		splx(s);		p->p_stats->p_ru.ru_nsignals++;		if (ps->ps_sig != signum) {			code = 0;		} else {			code = ps->ps_code;			ps->ps_code = 0;		}		null_sigval.sival_ptr = 0;		(*p->p_emul->e_sendsig)(action, signum, returnmask, code,		    SI_USER, null_sigval);	}}