4 * (c)Copyright 2012 Antonio Huete Jimenez <tuxillo@quantumachine.net>,
5 * this code is hereby placed in the public domain.
7 * As a safety the directory 'tmpfiles/' must exist. This program will
8 * create 500 x 8MB files in tmpfiles/*, memory map the files MAP_SHARED,
9 * R+W, make random modifications, and msync() in a loop.
11 * The purpose is to stress the VM system.
23 static void randomfill(int fd);
26 main(int argc, char *argv[])
33 struct stat st[NFILES];
37 for (i = 0; i < NFILES; i++) {
38 snprintf(name, 128, "tmpfiles/file%d", i);
39 if ((fd[i] = open(name, O_RDWR)) < 1) {
40 if ((fd[i] = open(name, O_RDWR | O_CREAT, 0644)) < 1)
45 if ((fstat(fd[i], &st[i])) == -1)
49 p[i] = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd[i], 0);
50 if (p[i] == MAP_FAILED)
53 for (jump = 0; jump < size; jump += 65535) {
54 p[i][jump] = jump + i;
56 if ((msync(*p, MS_SYNC, 0)) == -1) {
57 printf("%s: %d %p\n", name, i, *p);
74 for (i = 0; i < 32768; ++i)
76 for (i = 0; i < 8192 * 1024; i += 32)
77 write(fd, buf, 32768);