diff options
author | rsc <rsc> | 2007-08-08 10:29:42 +0000 |
---|---|---|
committer | rsc <rsc> | 2007-08-08 10:29:42 +0000 |
commit | f2f062da61eaca1dee675281c3b6b95d220ab322 (patch) | |
tree | b2ad7ea8bf2359cf090d4ea1b8efa1969309ec6b /pipe.c | |
parent | 1cb183a987bb08cb0b25a6b8bd7e4011325c8ca9 (diff) | |
download | xv6-labs-f2f062da61eaca1dee675281c3b6b95d220ab322.tar.gz xv6-labs-f2f062da61eaca1dee675281c3b6b95d220ab322.tar.bz2 xv6-labs-f2f062da61eaca1dee675281c3b6b95d220ab322.zip |
check p->killed for long-lived sleeps
Diffstat (limited to 'pipe.c')
-rw-r--r-- | pipe.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -86,7 +86,7 @@ pipe_write(struct pipe *p, char *addr, int n) for(i = 0; i < n; i++){ while(((p->writep + 1) % PIPESIZE) == p->readp){ - if(p->readopen == 0){ + if(p->readopen == 0 || curproc[cpu()]->killed){ release(&p->lock); return -1; } @@ -110,7 +110,7 @@ pipe_read(struct pipe *p, char *addr, int n) acquire(&p->lock); while(p->readp == p->writep){ - if(p->writeopen == 0){ + if(p->writeopen == 0 || curproc[cpu()]->killed){ release(&p->lock); return 0; } |