#include #include #include #include #include #include #include static void bail(int cond, const char *msg) { if (cond) { perror(msg); exit(1); } } #define COUNT 100 volatile int wobble; int main(int argc, char** argv) { int fd = open("/dev/fb0", O_RDWR); unsigned char *addr; wobble = 42; bail(fd < 0, "/dev/fb0"); printf("Ready to map\n"); if (argc == 1) while (wobble == 42); addr = mmap(NULL, 4096*COUNT, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); printf("Mapped at %p\n", addr); bail(addr == MAP_FAILED, "mmap"); int i,j=0; while (wobble != 42); // fault the pages in if they need to be for(i=0; i < COUNT; i++) j += addr[i*4096]; while (wobble == 42); }