diff options
author | Björn-Egil Dahlberg <[email protected]> | 2013-01-11 16:17:57 +0100 |
---|---|---|
committer | Björn-Egil Dahlberg <[email protected]> | 2013-01-11 16:17:57 +0100 |
commit | 8df9bc2fc2336245d26bdcf386fee43904d2b34b (patch) | |
tree | c37f14e3de7884a9e537dee9b0be6dfdba86d9a3 /erts/configure.in | |
parent | 1897e315ee2d8417a6e32f5fae00e9a124a45d83 (diff) | |
parent | 918d7a3f1ee1f0b10fa3ead21f79166328fd2dfe (diff) | |
download | otp-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.in | 39 |
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 |