125889Sdfr#include <sys/types.h>
225889Sdfr#include <sys/fcntl.h>
325889Sdfr#include <sys/mman.h>
425889Sdfr#include <unistd.h>
525889Sdfr
625889Sdfrint main(int argc, char** argv)
725889Sdfr{
825889Sdfr    int fd, fd2;
925889Sdfr    caddr_t addr;
1025889Sdfr    char zeros[4096];
1125889Sdfr    char ones[200];
1225889Sdfr
1325889Sdfr    memset(zeros, 0, sizeof zeros);
1425889Sdfr    memset(ones, 1, sizeof ones);
1525889Sdfr#if 0
1625889Sdfr    unlink("test1.data");
1725889Sdfr    fd = open("test1.data", O_RDWR|O_CREAT, 0666);
1825889Sdfr    if (fd < 0)
1925889Sdfr	err(1, "creating file");
2025889Sdfr    if (write(fd, zeros, sizeof zeros) < 0)
2125889Sdfr	err(1, "writing zeros");
2225889Sdfr    close(fd);
2325889Sdfr#endif
2425889Sdfr
2525889Sdfr    fd = open("test1.data", O_RDWR);
2625889Sdfr    if (fd < 0)
2725889Sdfr	err(1, "opening file");
2825889Sdfr    if (lseek(fd, 600, SEEK_SET) < 0)
2925889Sdfr	err(1, "seeking");
3025889Sdfr
3125889Sdfr    if (write(fd, ones, sizeof ones) < 0)
3225889Sdfr	err(1, "writing ones");
3325889Sdfr
3425889Sdfr    fsync(fd);
3525889Sdfr
3625889Sdfr    addr = mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0);
3725889Sdfr    if (addr == MAP_FAILED)
3825889Sdfr	err(1, "mapping");
3925889Sdfr    unlink("test1.scratch");
4025889Sdfr    fd2 = open("test1.scratch", O_RDWR|O_CREAT, 0666);
4125889Sdfr    if (fd2 < 0)
4225889Sdfr	err(1, "creating scratch");
4325889Sdfr
4425889Sdfr    if (write(fd2, addr, 4096) < 0)
4525889Sdfr	err(1, "writing scratch");
4625889Sdfr}
47