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