source: vendor/current/tests/shared_mmap.c

Last change on this file 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
18main()
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.