#include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { int fd; void *addr; char buf[4096]; if (argc != 2) { fprintf(stderr, "usage: %s filename\n", argv[0]); exit(1); } if ((fd = open(argv[1], O_CREAT|O_RDWR, 0666)) < 0) { perror(argv[1]); exit(1); } if (ftruncate(fd, 4096) < 0) { perror("ftruncate"); exit(1); } if ((addr = mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0)) == MAP_FAILED) { perror("mmap"); exit(1); } close(fd); /* first read */ memcpy(buf, addr, 4096); /* now write a bit */ memcpy(addr, buf, 8); printf("%s: test passed.\n", argv[0]); exit(0); }