aboutsummaryrefslogtreecommitdiffstats
path: root/erts/configure.in
diff options
context:
space:
mode:
authorBjörn-Egil Dahlberg <[email protected]>2013-01-11 16:17:57 +0100
committerBjörn-Egil Dahlberg <[email protected]>2013-01-11 16:17:57 +0100
commit8df9bc2fc2336245d26bdcf386fee43904d2b34b (patch)
treec37f14e3de7884a9e537dee9b0be6dfdba86d9a3 /erts/configure.in
parent1897e315ee2d8417a6e32f5fae00e9a124a45d83 (diff)
parent918d7a3f1ee1f0b10fa3ead21f79166328fd2dfe (diff)
downloadotp-8df9bc2fc2336245d26bdcf386fee43904d2b34b.tar.gz
otp-8df9bc2fc2336245d26bdcf386fee43904d2b34b.tar.bz2
otp-8df9bc2fc2336245d26bdcf386fee43904d2b34b.zip
Merge branch 'fdm/file-allocate/OTP-10680'
* fdm/file-allocate/OTP-10680: Update preloaded prim_file.beam erts: Fix xcomp configure for fallocate Add file:allocate/3 operation
Diffstat (limited to 'erts/configure.in')
-rw-r--r--erts/configure.in39
1 files changed, 38 insertions, 1 deletions
diff --git a/erts/configure.in b/erts/configure.in
index 3256b0cb59..a73bb358a0 100644
--- a/erts/configure.in
+++ b/erts/configure.in
@@ -1075,8 +1075,45 @@ fi
AC_SUBST(ERTS_BUILD_SMP_EMU)
-AC_CHECK_FUNCS([posix_fadvise])
+AC_CHECK_FUNCS([posix_fadvise, fallocate])
+AC_CHECK_HEADERS([linux/falloc.h])
+dnl * Old glibcs have broken posix_fallocate(). Make sure not to use it.
+dnl * It may also be broken in AIX.
+AC_CACHE_CHECK([whether posix_fallocate() works],i_cv_posix_fallocate_works,[
+ AC_TRY_RUN([
+ #if !defined(__sun) && !defined(__sun__)
+ #define _XOPEN_SOURCE 600
+ #endif
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+ #if defined(__GLIBC__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 7))
+ possibly broken posix_fallocate
+ #endif
+ int main() {
+ int fd = creat("conftest.temp", 0600);
+ int ret;
+ if (-1 == fd) {
+ perror("creat()");
+ return 2;
+ }
+ ret = posix_fallocate(fd, 1024, 1024) < 0 ? 1 : 0;
+ unlink("conftest.temp");
+ return ret;
+ }
+ ], [
+ i_cv_posix_fallocate_works=yes
+ ], [
+ i_cv_posix_fallocate_works=no
+ ], [
+ i_cv_posix_fallocate_works=no
+ ])
+])
+if test $i_cv_posix_fallocate_works = yes; then
+ AC_DEFINE(HAVE_POSIX_FALLOCATE,, Define if you have a working posix_fallocate())
+fi
#
# Figure out if the emulator should use threads. The default is set above