aboutsummaryrefslogtreecommitdiff
path: root/miscutils/readahead.c
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2006-08-20 22:12:18 +0000
committerRob Landley <rob@landley.net>2006-08-20 22:12:18 +0000
commit0e4690d4ef9fe55ccf6db371c826112809e162f9 (patch)
tree1eac13023c328f3956a00f3e741eb1cda45696d0 /miscutils/readahead.c
parent289e86a0a5b2482fc1b6a442d3acd749639e4d64 (diff)
downloadbusybox-0e4690d4ef9fe55ccf6db371c826112809e162f9.tar.gz
Michael Opdenacker contributed a readahead applet.
Diffstat (limited to 'miscutils/readahead.c')
-rw-r--r--miscutils/readahead.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/miscutils/readahead.c b/miscutils/readahead.c
new file mode 100644
index 000000000..9f1bb47be
--- /dev/null
+++ b/miscutils/readahead.c
@@ -0,0 +1,36 @@
+/* vi: set sw=4 ts=4: */
+/*
+ * readahead implementation for busybox
+ *
+ * Preloads the given files in RAM, to reduce access time.
+ * Does this by calling the readahead(2) system call.
+ *
+ * Copyright (C) 2006 Michael Opdenacker <michael@free-electrons.com>
+ *
+ * Licensed under GPLv2 or later, see file License in this tarball for details.
+ */
+
+#include "busybox.h"
+
+int readahead_main(int argc, char **argv)
+{
+ FILE *f;
+ struct stat stat_buf;
+ int retval = EXIT_SUCCESS;
+
+ if (argc == 1) bb_show_usage();
+
+ while (*++argv) {
+ if ((f = bb_wfopen(*argv, "r")) != NULL) {
+ int r, fd=fileno(f);
+
+ xstat(*argv, &stat_buf);
+ r = readahead(fd, 0, fdlength(fd));
+ fclose(f);
+ if (r >= 0) continue;
+ }
+ retval = EXIT_FAILURE;
+ }
+
+ return retval;
+}