Last change
on this file since 1075 was 414, checked in by Herwig Bauernfeind, 15 years ago |
Samba 3.5.0: Initial import
|
File size:
1.2 KB
|
Line | |
---|
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 */
|
---|
3 |
|
---|
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>
|
---|
11 |
|
---|
12 | #define DATA "conftest.mmap"
|
---|
13 |
|
---|
14 | #ifndef MAP_FILE
|
---|
15 | #define MAP_FILE 0
|
---|
16 | #endif
|
---|
17 |
|
---|
18 | main()
|
---|
19 | {
|
---|
20 | int *buf;
|
---|
21 | int i;
|
---|
22 | int fd = open(DATA,O_RDWR|O_CREAT|O_TRUNC,0666);
|
---|
23 | int count=7;
|
---|
24 |
|
---|
25 | if (fd == -1) exit(1);
|
---|
26 |
|
---|
27 | for (i=0;i<10000;i++) {
|
---|
28 | write(fd,&i,sizeof(i));
|
---|
29 | }
|
---|
30 |
|
---|
31 | close(fd);
|
---|
32 |
|
---|
33 | if (fork() == 0) {
|
---|
34 | fd = open(DATA,O_RDWR);
|
---|
35 | if (fd == -1) exit(1);
|
---|
36 |
|
---|
37 | buf = (int *)mmap(NULL, 10000*sizeof(int),
|
---|
38 | (PROT_READ | PROT_WRITE),
|
---|
39 | MAP_FILE | MAP_SHARED,
|
---|
40 | fd, 0);
|
---|
41 |
|
---|
42 | if (buf == (int *)-1) exit(1);
|
---|
43 |
|
---|
44 | while (count-- && buf[9124] != 55732) sleep(1);
|
---|
45 |
|
---|
46 | if (count <= 0) exit(1);
|
---|
47 |
|
---|
48 | buf[1763] = 7268;
|
---|
49 | exit(0);
|
---|
50 | }
|
---|
51 |
|
---|
52 | fd = open(DATA,O_RDWR);
|
---|
53 | if (fd == -1) exit(1);
|
---|
54 |
|
---|
55 | buf = (int *)mmap(NULL, 10000*sizeof(int),
|
---|
56 | (PROT_READ | PROT_WRITE),
|
---|
57 | MAP_FILE | MAP_SHARED,
|
---|
58 | fd, 0);
|
---|
59 |
|
---|
60 | if (buf == (int *)-1) exit(1);
|
---|
61 |
|
---|
62 | buf[9124] = 55732;
|
---|
63 |
|
---|
64 | while (count-- && buf[1763] != 7268) sleep(1);
|
---|
65 |
|
---|
66 | unlink(DATA);
|
---|
67 |
|
---|
68 | if (count > 0) exit(0);
|
---|
69 | exit(1);
|
---|
70 | }
|
---|
Note:
See
TracBrowser
for help on using the repository browser.