busybox/miscutils/readahead.c
<<
>>
Prefs
   1/* vi: set sw=4 ts=4: */
   2/*
   3 * readahead implementation for busybox
   4 *
   5 * Preloads the given files in RAM, to reduce access time.
   6 * Does this by calling the readahead(2) system call.
   7 *
   8 * Copyright (C) 2006  Michael Opdenacker <michael@free-electrons.com>
   9 *
  10 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  11 */
  12
  13//usage:#define readahead_trivial_usage
  14//usage:       "[FILE]..."
  15//usage:#define readahead_full_usage "\n\n"
  16//usage:       "Preload FILEs to RAM"
  17
  18#include "libbb.h"
  19
  20int readahead_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
  21int readahead_main(int argc UNUSED_PARAM, char **argv)
  22{
  23        int retval = EXIT_SUCCESS;
  24
  25        if (!argv[1]) {
  26                bb_show_usage();
  27        }
  28
  29        while (*++argv) {
  30                int fd = open_or_warn(*argv, O_RDONLY);
  31                if (fd >= 0) {
  32                        off_t len;
  33                        int r;
  34
  35                        /* fdlength was reported to be unreliable - use seek */
  36                        len = xlseek(fd, 0, SEEK_END);
  37                        xlseek(fd, 0, SEEK_SET);
  38                        r = readahead(fd, 0, len);
  39                        close(fd);
  40                        if (r >= 0)
  41                                continue;
  42                }
  43                retval = EXIT_FAILURE;
  44        }
  45
  46        return retval;
  47}
  48