| /* readahead.c - preload files into disk cache. |
| * |
| * Copyright 2013 Rob Landley <rob@landley.net> |
| * |
| * No standard. |
| |
| USE_READAHEAD(NEWTOY(readahead, NULL, TOYFLAG_BIN)) |
| |
| config READAHEAD |
| bool "readahead" |
| default y |
| help |
| usage: readahead FILE... |
| |
| Preload files into disk cache. |
| */ |
| |
| #include "toys.h" |
| |
| #include <sys/syscall.h> |
| |
| static void do_readahead(int fd, char *name) |
| { |
| int rc; |
| |
| // Since including fcntl.h doesn't give us the wrapper, use the syscall. |
| // 32 bits takes LO/HI offset (we don't care about endianness of 0). |
| if (sizeof(long) == 4) rc = syscall(__NR_readahead, fd, 0, 0, INT_MAX); |
| else rc = syscall(__NR_readahead, fd, 0, INT_MAX); |
| |
| if (rc) perror_msg("readahead: %s", name); |
| } |
| |
| void readahead_main(void) |
| { |
| loopfiles(toys.optargs, do_readahead); |
| } |