mirror of
https://github.com/samba-team/samba.git
synced 2025-01-26 10:04:02 +03:00
replace: Check if we have mremap() available
This commit is contained in:
parent
88ecf1a9b8
commit
a171938408
@ -98,6 +98,13 @@ if test x"$libreplace_cv_HAVE_MMAP" = x"yes"; then
|
||||
AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([for working mremap],libreplace_cv_HAVE_MREMAP,[
|
||||
AC_TRY_RUN([#include "$libreplacedir/test/shared_mremap.c"],
|
||||
libreplace_cv_HAVE_MREMAP=yes,libreplace_cv_HAVE_MREMAP=no,libreplace_cv_HAVE_MREMAP=cross)])
|
||||
if test x"$libreplace_cv_HAVE_MREMAP" = x"yes"; then
|
||||
AC_DEFINE(HAVE_MREMAP,1,[Whether mremap works])
|
||||
fi
|
||||
|
||||
|
||||
AC_CHECK_HEADERS(sys/syslog.h syslog.h)
|
||||
AC_CHECK_HEADERS(sys/time.h time.h)
|
||||
|
48
lib/replace/test/shared_mremap.c
Normal file
48
lib/replace/test/shared_mremap.c
Normal file
@ -0,0 +1,48 @@
|
||||
/* this tests whether we can use mremap */
|
||||
|
||||
#if defined(HAVE_UNISTD_H)
|
||||
#include <unistd.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
|
||||
|
||||
#ifndef MAP_FAILED
|
||||
#define MAP_FAILED (int *)-1
|
||||
#endif
|
||||
|
||||
main()
|
||||
{
|
||||
int *buf;
|
||||
int fd;
|
||||
int err = 1;
|
||||
|
||||
fd = open(DATA, O_RDWR|O_CREAT|O_TRUNC, 0666);
|
||||
if (fd == -1) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
buf = (int *)mmap(NULL, 0x1000, PROT_READ | PROT_WRITE,
|
||||
MAP_FILE | MAP_SHARED, fd, 0);
|
||||
if (buf == MAP_FAILED) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
buf = mremap(buf, 0x1000, 0x2000, MREMAP_MAYMOVE);
|
||||
if (buf == MAP_FAILED) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
err = 0;
|
||||
done:
|
||||
close(fd);
|
||||
unlink(DATA);
|
||||
exit(err);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user