aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuel Vadot <manu@FreeBSD.org>2021-12-09 13:54:58 +0000
committerEmmanuel Vadot <manu@FreeBSD.org>2021-12-16 10:50:31 +0000
commit70661eaafa069062317ae2c6012cc2bc303da0cc (patch)
tree94b8b05a0603e9e245b88998f70e4d916e940ec8
parentbf07f2f8623d5e29e814b9dc49a0cdff920778c3 (diff)
downloadsrc-70661eaafa069062317ae2c6012cc2bc303da0cc.tar.gz
src-70661eaafa069062317ae2c6012cc2bc303da0cc.zip
loader: Add a readtest command
readtest will simply load the file in memory, useful for timing loading on some filesystems. Reviewed by: tsoome MFC after: 2 weeks Sponsored by: Beckhoff Automation GmbH & Co. KG Differential Revision: https://reviews.freebsd.org/D33411
-rw-r--r--stand/common/commands.c31
-rw-r--r--stand/libsa/tftp.c1
2 files changed, 32 insertions, 0 deletions
diff --git a/stand/common/commands.c b/stand/common/commands.c
index 9f7252014d87..0d21ed44c681 100644
--- a/stand/common/commands.c
+++ b/stand/common/commands.c
@@ -545,3 +545,34 @@ command_lsdev(int argc, char *argv[])
pager_close();
return (CMD_OK);
}
+
+static int
+command_readtest(int argc, char *argv[])
+{
+ int fd;
+ time_t start, end;
+ char buf[512];
+ ssize_t rv, count = 0;
+
+ if (argc != 2) {
+ snprintf(command_errbuf, sizeof(command_errbuf),
+ "Usage: readtest <filename>");
+ return (CMD_ERROR);
+ }
+
+ start = getsecs();
+ if ((fd = open(argv[1], O_RDONLY)) < 0) {
+ snprintf(command_errbuf, sizeof(command_errbuf),
+ "can't open '%s'", argv[1]);
+ return (CMD_ERROR);
+ }
+ while ((rv = read(fd, buf, sizeof(buf))) > 0)
+ count += rv;
+ end = getsecs();
+
+ printf("Received %zd bytes during %jd seconds\n", count, (intmax_t)end - start);
+ close(fd);
+ return (CMD_OK);
+}
+
+COMMAND_SET(readtest, "readtest", "Time a file read", command_readtest);
diff --git a/stand/libsa/tftp.c b/stand/libsa/tftp.c
index 80156cf95ef0..78eedddcb1f6 100644
--- a/stand/libsa/tftp.c
+++ b/stand/libsa/tftp.c
@@ -55,6 +55,7 @@ __FBSDID("$FreeBSD$");
#include <string.h>
+#include <bootstrap.h>
#include "stand.h"
#include "net.h"
#include "netif.h"