summaryrefslogtreecommitdiff
path: root/sys/src
diff options
context:
space:
mode:
authoraiju <aiju@phicode.de>2011-07-19 16:42:33 +0200
committeraiju <aiju@phicode.de>2011-07-19 16:42:33 +0200
commit8f6173c8bd347defffeafe1526e0bc5bca36c492 (patch)
treebb204db5cb40faa9c041d4485fb4234534f552d9 /sys/src
parent943b0d46099e72a9e06efdf855d37ffe546b3ff5 (diff)
added aux/seek
Diffstat (limited to 'sys/src')
-rw-r--r--sys/src/cmd/aux/mkfile1
-rw-r--r--sys/src/cmd/aux/seek.c33
2 files changed, 34 insertions, 0 deletions
diff --git a/sys/src/cmd/aux/mkfile b/sys/src/cmd/aux/mkfile
index 943ae06f2..3cc2a3dd0 100644
--- a/sys/src/cmd/aux/mkfile
+++ b/sys/src/cmd/aux/mkfile
@@ -31,6 +31,7 @@ TARG=\
rdwr\
reboot\
searchfs\
+ seek\
statusbar\
stub\
tablet\
diff --git a/sys/src/cmd/aux/seek.c b/sys/src/cmd/aux/seek.c
new file mode 100644
index 000000000..134463b91
--- /dev/null
+++ b/sys/src/cmd/aux/seek.c
@@ -0,0 +1,33 @@
+#include <u.h>
+#include <libc.h>
+
+void
+main(int argc, char **argv)
+{
+ char buf[512];
+ vlong size;
+ vlong pos;
+ vlong ns;
+ int fd;
+ int i;
+
+ if(argc != 2) {
+ fprint(2, "usage: %s /dev/sd??/data\n", argv[0]);
+ exits("usage");
+ }
+
+ srand(time(0));
+ fd = open(argv[1], OREAD);
+ if(fd < 0)
+ sysfatal("open: %r");
+ size = seek(fd, 0, 2) / 512;
+ ns = nsec();
+ for(i=0;i<100;i++) {
+ pos = (vlong)(frand() * size);
+ if(pread(fd, buf, 512, 512 * pos) < 512)
+ sysfatal("read: %r");
+ }
+ ns = nsec() - ns;
+ print("%.3g\n", ((double)ns)/100000000);
+ exits(nil);
+}