mirror of
https://github.com/Stichting-MINIX-Research-Foundation/pkgsrc-ng.git
synced 2025-09-27 22:11:24 -04:00
45 lines
1022 B
Plaintext
45 lines
1022 B
Plaintext
$NetBSD: patch-al,v 1.4 2005/03/03 11:54:31 garbled Exp $
|
|
--- src/bw_pipe.c.orig 1997-06-26 17:34:33.000000000 -0700
|
|
+++ src/bw_pipe.c 2005-03-03 01:31:48.000000000 -0700
|
|
@@ -134,7 +134,7 @@
|
|
}
|
|
|
|
/* Amount to transfer */
|
|
- todo = XFERUNIT * num_iter;
|
|
+ todo = XFERUNIT * num_iter + bufsize;
|
|
|
|
/* Allocate buffer */
|
|
buf = (char *) malloc(bufsize);
|
|
@@ -147,6 +147,8 @@
|
|
/* Spawn off a writer, then time the read */
|
|
switch (fork()) {
|
|
case 0: /* writer */
|
|
+ close(pipes[0]);
|
|
+
|
|
while ((done < todo) &&
|
|
((n = write(pipes[1], buf, bufsize)) > 0))
|
|
done += n;
|
|
@@ -159,8 +161,13 @@
|
|
/*NOTREACHED*/
|
|
|
|
default: /* reader */
|
|
+ close(pipes[1]);
|
|
+
|
|
/* wait for writer */
|
|
- sleep(1);
|
|
+ while ((done < bufsize) &&
|
|
+ ((n = read(pipes[0], buf, bufsize - done)) > 0))
|
|
+ done += n;
|
|
+
|
|
|
|
start(); /* start timing */
|
|
while ((done < todo) &&
|
|
@@ -168,6 +175,7 @@
|
|
done += n;
|
|
*t = stop(); /* stop timing */
|
|
|
|
+ close(pipes[0]);
|
|
wait(&termstat); /* wait for writer to exit */
|
|
}
|
|
|