Wake up PIOCWAIT handler on the process exit in addition to the stop

events. &p->p_stype is explicitely woken up on process exit for us.

Now, truss /nonexistent exits with error instead of waiting until killed
by signal.

Reported by:	Nikos Vassiliadis nvass at teledomenet gr
Reviewed by:	jhb
MFC after:	1 week
This commit is contained in:
Konstantin Belousov 2006-11-17 14:52:38 +00:00
parent 1ea7de37f9
commit dbf989ea6a

View File

@ -124,7 +124,7 @@ procfs_ioctl(PFS_IOCTL_ARGS)
*(unsigned int *)data = p->p_pfsflags;
break;
case PIOCWAIT:
while (p->p_step == 0) {
while (p->p_step == 0 && (p->p_flag & P_WEXIT) == 0) {
/* sleep until p stops */
error = msleep(&p->p_stype, &p->p_mtx,
PWAIT|PCATCH, "pioctl", 0);
@ -142,7 +142,7 @@ procfs_ioctl(PFS_IOCTL_ARGS)
break;
#ifdef COMPAT_IA32
case PIOCWAIT32:
while (p->p_step == 0) {
while (p->p_step == 0 && (p->p_flag & P_WEXIT) == 0) {
/* sleep until p stops */
error = msleep(&p->p_stype, &p->p_mtx,
PWAIT|PCATCH, "pioctl", 0);