int st;
int st, pri;  pri = PWAIT|PCATCH; if (type == SYSTR_MSG_EXECVE) pri &= ~PCATCH;
systrace_make_msg(struct str_process *strp, int type){	struct str_message *msg = &strp->msg;	struct fsystrace *fst = strp->parent;	struct proc *p = strp->proc;	int st;	msg->msg_seqnr = ++strp->seqnr;	msg->msg_type = type;	msg->msg_pid = strp->pid;	if (strp->policy)		msg->msg_policy = strp->policy->nr;	else		msg->msg_policy = -1;	SET(strp->flags, STR_PROC_WAITANSWER);	if (ISSET(strp->flags, STR_PROC_ONQUEUE))		goto out;	TAILQ_INSERT_TAIL(&fst->messages, strp, msg_next);	SET(strp->flags, STR_PROC_ONQUEUE); out:	systrace_wakeup(fst);	/* Release the lock - XXX */	lockmgr(&fst->lock, LK_RELEASE, NULL, p);	while (1) {		st = tsleep(strp, PWAIT | PCATCH, "systrmsg", 0);		if (st != 0)			return (ERESTART);		/* If we detach, then everything is permitted */		if ((strp = curproc->p_systrace) == NULL)			return (0);		if (!ISSET(strp->flags, STR_PROC_WAITANSWER))			break;	}	return (0);}