mirror of
https://github.com/samba-team/samba.git
synced 2025-01-06 13:18:07 +03:00
6cc68c1ccf
Found by Joe Guo during preperation for automated code coverage output. In order to allow the Makefile wrapper to work we need to rename the test directory to tests. Signed-off-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Gary Lockyer <gary@catalyst.net.nz>
72 lines
1.2 KiB
C
72 lines
1.2 KiB
C
/* this tests whether we can use a shared writeable mmap on a file -
|
|
as needed for the mmap variant of FAST_SHARE_MODES */
|
|
|
|
#if defined(HAVE_UNISTD_H)
|
|
#include <unistd.h>
|
|
#endif
|
|
#ifdef HAVE_STDLIB_H
|
|
#include <stdlib.h>
|
|
#endif
|
|
#include <sys/mman.h>
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <fcntl.h>
|
|
|
|
#define DATA "conftest.mmap"
|
|
|
|
#ifndef MAP_FILE
|
|
#define MAP_FILE 0
|
|
#endif
|
|
|
|
int main(void)
|
|
{
|
|
int *buf;
|
|
int i;
|
|
int fd = open(DATA,O_RDWR|O_CREAT|O_TRUNC,0666);
|
|
int count=7;
|
|
|
|
if (fd == -1) exit(1);
|
|
|
|
for (i=0;i<10000;i++) {
|
|
write(fd,&i,sizeof(i));
|
|
}
|
|
|
|
close(fd);
|
|
|
|
if (fork() == 0) {
|
|
fd = open(DATA,O_RDWR);
|
|
if (fd == -1) exit(1);
|
|
|
|
buf = (int *)mmap(NULL, 10000*sizeof(int),
|
|
(PROT_READ | PROT_WRITE),
|
|
MAP_FILE | MAP_SHARED,
|
|
fd, 0);
|
|
|
|
while (count-- && buf[9124] != 55732) sleep(1);
|
|
|
|
if (count <= 0) exit(1);
|
|
|
|
buf[1763] = 7268;
|
|
exit(0);
|
|
}
|
|
|
|
fd = open(DATA,O_RDWR);
|
|
if (fd == -1) exit(1);
|
|
|
|
buf = (int *)mmap(NULL, 10000*sizeof(int),
|
|
(PROT_READ | PROT_WRITE),
|
|
MAP_FILE | MAP_SHARED,
|
|
fd, 0);
|
|
|
|
if (buf == (int *)-1) exit(1);
|
|
|
|
buf[9124] = 55732;
|
|
|
|
while (count-- && buf[1763] != 7268) sleep(1);
|
|
|
|
unlink(DATA);
|
|
|
|
if (count > 0) exit(0);
|
|
exit(1);
|
|
}
|