Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / talloc / libreplace / test / shared_mmap.c
blob50dad8d69648a6993e64d3d0433576319e1ad462
1 /* this tests whether we can use a shared writeable mmap on a file -
2 as needed for the mmap variant of FAST_SHARE_MODES */
4 #if defined(HAVE_UNISTD_H)
5 #include <unistd.h>
6 #endif
7 #include <sys/mman.h>
8 #include <sys/types.h>
9 #include <sys/stat.h>
10 #include <fcntl.h>
12 #define DATA "conftest.mmap"
14 #ifndef MAP_FILE
15 #define MAP_FILE 0
16 #endif
18 main()
20 int *buf;
21 int i;
22 int fd = open(DATA,O_RDWR|O_CREAT|O_TRUNC,0666);
23 int count=7;
25 if (fd == -1) exit(1);
27 for (i=0;i<10000;i++) {
28 write(fd,&i,sizeof(i));
31 close(fd);
33 if (fork() == 0) {
34 fd = open(DATA,O_RDWR);
35 if (fd == -1) exit(1);
37 buf = (int *)mmap(NULL, 10000*sizeof(int),
38 (PROT_READ | PROT_WRITE),
39 MAP_FILE | MAP_SHARED,
40 fd, 0);
42 while (count-- && buf[9124] != 55732) sleep(1);
44 if (count <= 0) exit(1);
46 buf[1763] = 7268;
47 exit(0);
50 fd = open(DATA,O_RDWR);
51 if (fd == -1) exit(1);
53 buf = (int *)mmap(NULL, 10000*sizeof(int),
54 (PROT_READ | PROT_WRITE),
55 MAP_FILE | MAP_SHARED,
56 fd, 0);
58 if (buf == (int *)-1) exit(1);
60 buf[9124] = 55732;
62 while (count-- && buf[1763] != 7268) sleep(1);
64 unlink(DATA);
66 if (count > 0) exit(0);
67 exit(1);