[T106][ZXW-22]7520V3SCV2.01.01.02P42U09_VEC_V0.8_AP_VEC origin source commit

Change-Id: Ic6e05d89ecd62fc34f82b23dcf306c93764aec4b
diff --git a/ap/app/busybox/src/miscutils/readahead.c b/ap/app/busybox/src/miscutils/readahead.c
new file mode 100644
index 0000000..e22aaa4
--- /dev/null
+++ b/ap/app/busybox/src/miscutils/readahead.c
@@ -0,0 +1,47 @@
+/* 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 source tree.
+ */
+
+//usage:#define readahead_trivial_usage
+//usage:       "[FILE]..."
+//usage:#define readahead_full_usage "\n\n"
+//usage:       "Preload FILEs to RAM"
+
+#include "libbb.h"
+
+int readahead_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+int readahead_main(int argc UNUSED_PARAM, char **argv)
+{
+	int retval = EXIT_SUCCESS;
+
+	if (!argv[1]) {
+		bb_show_usage();
+	}
+
+	while (*++argv) {
+		int fd = open_or_warn(*argv, O_RDONLY);
+		if (fd >= 0) {
+			off_t len;
+			int r;
+
+			/* fdlength was reported to be unreliable - use seek */
+			len = xlseek(fd, 0, SEEK_END);
+			xlseek(fd, 0, SEEK_SET);
+			r = readahead(fd, 0, len);
+			close(fd);
+			if (r >= 0)
+				continue;
+		}
+		retval = EXIT_FAILURE;
+	}
+
+	return retval;
+}