#include #include #include #include #include char *file = "/larder/file/file0"; int fd; int size = 1*G; char *ptr = 0; int foo(void) { #define N 50 int pos = random() % size, i; char core[N]; int t; volatile char x __attribute__ ((unused)); t = mincore(&ptr[pos-4096*8], 4096*N, core); printf("-%d ", t); for (i = 0; i < N; i++) printf("%s%c", i%8?"":" ", core[i] ? '0' : '-'); printf("\n"); x = ptr[pos]; x = ptr[pos+4096*24]; t = mincore(&ptr[pos-4096*8], 4096*N, core); printf("+%d ", t); for (i = 0; i < N; i++) printf("%s%c", i%8?"":" ", core[i] ? '0' : '-'); printf("\n"); return pos; } int main(int argc, char *argv[]) { int i; fd = open(file, O_RDONLY); unless (fd >= 0) die("open"); ptr = mmap(0, size, PROT_READ, MAP_PRIVATE, fd, 0); unless (ptr) die("mmap"); srandom(time(0)+getpid()); for (i = 0; i < 10; i++) foo(); return 0; }