From b5eb8f3030df216b67f2c5d59ad92649ce35a6c8 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Sun, 21 Jan 1996 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1996-01-21 --- port/devproc.c | 5 ++++- port/proc.c | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/port/devproc.c b/port/devproc.c index e5e454c7d18568418eeacaa6bb657119a58d2ed0..26400667207596d87f3bb8f7f7dc4bd78a9b2beb 100644 --- a/port/devproc.c +++ b/port/devproc.c @@ -270,9 +270,9 @@ procread(Chan *c, void *va, long n, ulong offset) Ureg kur; uchar *rptr; Mntwalk *mw; - int i, j, rsize; Segment *sg, *s; char *a = va, *sps; + int i, j, rsize, pid; char statbuf[NSEG*32]; if(c->qid.path & CHDIR) @@ -440,9 +440,12 @@ procread(Chan *c, void *va, long n, ulong offset) unlock(&p->exl); error(Enochild); } + pid = p->pid; while(p->waitq == 0) { unlock(&p->exl); sleep(&p->waitr, haswaitq, p); + if(p->pid != pid) + error(Eprocdied); lock(&p->exl); } wq = p->waitq; diff --git a/port/proc.c b/port/proc.c index 328868fc6b84264171bb79e633584d8ac740c43c..c345f717fd918e43abeabeed53a5ca49d4304677 100644 --- a/port/proc.c +++ b/port/proc.c @@ -708,6 +708,7 @@ pexit(char *exitstr, int freemem) lock(&up->exl); /* Prevent my children from leaving waits */ up->pid = 0; + wakeup(&up->waitr); unlock(&up->exl); for(f = up->waitq; f; f = next) {