summaryrefslogtreecommitdiff
path: root/sys/kern/sys_pipe.c
diff options
context:
space:
mode:
authorJohn Dyson <dyson@FreeBSD.org>1996-02-04 22:09:12 +0000
committerJohn Dyson <dyson@FreeBSD.org>1996-02-04 22:09:12 +0000
commitdca5129987a1ec4da4a2627b0a4e74a4eaebc5c9 (patch)
tree5297a6949c9f87c72275bc64891e478ffb9fbbd2 /sys/kern/sys_pipe.c
parent267173e72dc9f967f9d2a8f3bd1e88aae0a417bb (diff)
Notes
Diffstat (limited to 'sys/kern/sys_pipe.c')
-rw-r--r--sys/kern/sys_pipe.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/kern/sys_pipe.c b/sys/kern/sys_pipe.c
index 4e563c9fd58c..a337c02cf76c 100644
--- a/sys/kern/sys_pipe.c
+++ b/sys/kern/sys_pipe.c
@@ -185,6 +185,9 @@ free1:
return (error);
}
+/*
+ * Allocate kva for pipe circular buffer, the space is pageable
+ */
static void
pipespace(cpipe)
struct pipe *cpipe;
@@ -464,7 +467,7 @@ pipe_build_write_buffer(wpipe, uio)
vm_page_t m;
- vm_fault_quick( addr, VM_PROT_READ);
+ vm_fault_quick( (caddr_t) addr, VM_PROT_READ);
paddr = pmap_kextract(addr);
if (!paddr) {
int j;
@@ -765,6 +768,10 @@ pipewrite(wpipe, uio, nbio)
wakeup(wpipe);
}
}
+
+ /*
+ * Don't return EPIPE if I/O was successful
+ */
if ((wpipe->pipe_buffer.cnt == 0) &&
(uio->uio_resid == 0) &&
(error == EPIPE))