diff options
Diffstat (limited to 'benchmarks/bonnie/patches/patch-ac')
-rw-r--r-- | benchmarks/bonnie/patches/patch-ac | 110 |
1 files changed, 105 insertions, 5 deletions
diff --git a/benchmarks/bonnie/patches/patch-ac b/benchmarks/bonnie/patches/patch-ac index 189c1b3c90a..f851e82bfbd 100644 --- a/benchmarks/bonnie/patches/patch-ac +++ b/benchmarks/bonnie/patches/patch-ac @@ -1,13 +1,113 @@ -$NetBSD: patch-ac,v 1.1 2002/06/09 00:24:30 grant Exp $ +$NetBSD: patch-ac,v 1.2 2005/03/03 08:58:27 garbled Exp $ ---- bonnie.c.orig Thu Aug 29 02:23:49 1996 -+++ bonnie.c Sun Jun 9 10:20:02 2002 -@@ -458,7 +458,7 @@ +--- bonnie.c.orig Wed Aug 28 12:23:49 1996 ++++ bonnie.c Tue Apr 29 23:22:39 2003 +@@ -25,6 +25,7 @@ + + #include <unistd.h> + #include <stdio.h> ++#include <stdlib.h> + #include <errno.h> + #include <fcntl.h> + #include <sys/types.h> +@@ -49,7 +50,8 @@ + #define Seeks (4000) + #define UpdateSeek (10) + #define SeekProcCount (3) +-#define Chunk (16384) ++ ++unsigned int Chunk = 16384; + + /* labels for the tests, used as an array index */ + typedef enum +@@ -91,7 +93,7 @@ + int argc, + char * argv[]) + { +- int buf[Chunk / IntSize]; ++ int *buf; + int bufindex; + int chars[256]; + int child; +@@ -122,6 +124,8 @@ + for (next = 1; next < argc; next++) + if (strcmp(argv[next], "-d") == 0) + dir = argv[++next]; ++ else if (strcmp(argv[next], "-c") == 0) ++ Chunk = atoi(argv[++next]); + else if (strcmp(argv[next], "-s") == 0) + size = atol(argv[++next]); + else if (strcmp(argv[next], "-m") == 0) +@@ -146,7 +150,12 @@ + /* size is in meg, rounded down to multiple of Chunk */ + size *= (1024 * 1024); + size = Chunk * (size / Chunk); +- fprintf(stderr, "File '%s', size: %ld\n", name, size); ++ fprintf(stderr, "File '%s', size: %qu\n", name, (u_quad_t) size); ++ ++ if (!(buf = (int *) malloc(Chunk / IntSize))) { ++ fprintf(stderr, "Error allocating buffer memory: %s\n", strerror(errno)); ++ exit(1); ++ } + + /* Fill up a file, writing it a char at a time with the stdio putc() call */ + fprintf(stderr, "Writing with putc()..."); +@@ -288,6 +297,7 @@ + { /* child process */ + + /* set up and wait for the go-ahead */ ++ close(0); /* From FreeBSD */ + close(seek_feedback[0]); + close(seek_control[1]); + newfile(name, &fd, &stream, 0); +@@ -303,7 +313,13 @@ + /* loop until we read a 0 ticket back from our parent */ + while(seek_tickets[0]) + { /* until Mom says stop */ +- doseek((long) (random() % (size / Chunk)), fd, ++ off_t seekto; ++ ++ if (size < ((off_t)1 << 32)) /* From FreeBSD */ ++ seekto = random() % (size / Chunk); ++ else ++ seekto = ((off_t)random() << 32 + random()) % (size / Chunk); ++ doseek(seekto, fd, + ((lseek_count++ % UpdateSeek) == 0)); + if (read(seek_control[0], seek_tickets, 1) != 1) + io_error("read ticket"); +@@ -413,7 +429,7 @@ + printf("K/sec %%CPU K/sec %%CPU K/sec %%CPU K/sec %%CPU K/sec "); + printf("%%CPU /sec %%CPU\n"); + +- printf("%-8.8s %4d ", machine, size / (1024 * 1024)); ++ printf("%-8.8s %4qu ", machine, (u_quad_t) size / (1024 * 1024)); + printf("%5d %4.1f %5d %4.1f %5d %4.1f ", + (int) (((double) size) / (delta[(int) Putc][Elapsed] * 1024.0)), + delta[(int) Putc][CPU] / delta[(int) Putc][Elapsed] * 100.0, +@@ -458,7 +474,7 @@ usage() { fprintf(stderr, - "usage: Bonnie [-d scratch-dir] [-s size-in-Mb] [-html] [-m machine-label]\n"); -+ "usage: bonnie [-d scratch-dir] [-s size-in-Mb] [-html] [-m machine-label]\n"); ++ "usage: bonnie [-c chunk-size] [-d scratch-dir] [-s size-in-Mb] [-html] [-m machine-label]\n"); + exit(1); + } + +@@ -529,7 +545,7 @@ + { + char buf[Chunk]; + +- sprintf(buf, "Bonnie: drastic I/O error (%s)", message); ++ sprintf(buf, "\nBonnie: drastic I/O error (%s)", message); + perror(buf); exit(1); } +@@ -568,7 +584,7 @@ + /* touch a word */ + buf[((int) random() % (size/IntSize - 2)) + 1]--; +- if (lseek(fd, (long) probe, 0) != probe) ++ if (lseek(fd, probe, 0) != probe) + io_error("lseek in doseek update"); + if (write(fd, (char *) buf, size) == -1) + io_error("write in doseek"); |