master xplshn/aruu / cmd / linux / readahead.c
 1/* See LICENSE file for copyright and license details. */
 2
 3#include <fcntl.h>
 4#include <limits.h>
 5#include <stdio.h>
 6#include <stdlib.h>
 7
 8#include "util.h"
 9
10static void
11usage(void)
12{
13  eprintf("usage: %s file...\n", argv0);
14}
15
16// ?man readahead: read files into page cache
17// ?man arguments: file...
18// ?man preload file contents into the page cache
19int
20main(int argc, char *argv[])
21{
22  FILE *fp;
23
24  ARGBEGIN
25  {
26    default:
27      usage();
28  }
29  ARGEND;
30
31  if (argc == 0)
32    usage();
33
34  for (; argc > 0; argc--, argv++) {
35    if (!(fp = fopen(argv[0], "r"))) {
36      weprintf("fopen %s:", argv[0]);
37      continue;
38    }
39    if (readahead(fileno(fp), 0, -1) < 0)
40      weprintf("readahead %s:", argv[0]);
41    fclose(fp);
42  }
43  return 0;
44}