Skip to content

Commit

Permalink
Check copy_file_range(2) is actually supported.
Browse files Browse the repository at this point in the history
  • Loading branch information
mmasaki committed Sep 12, 2020
1 parent ae50863 commit 012785e
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 4 deletions.
36 changes: 36 additions & 0 deletions configure.ac
Expand Up @@ -2396,6 +2396,42 @@ AS_IF([test "$rb_cv_rshift_sign" = yes], [
AC_DEFINE(RSHIFT(x,y), (((x)<0) ? ~((~(x))>>(int)(y)) : (x)>>(int)(y)))
])

AS_IF([test "$ac_cv_func_copy_file_range" = no], [
AC_CACHE_CHECK([for copy_file_range],
rb_cv_use_copy_file_range,
[AC_TRY_RUN([
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/syscall.h>
#include <fcntl.h>
#include <unistd.h>
#ifndef O_TMPFILE
#define O_TMPFILE __O_TMPFILE
#endif
int
main()
{
#ifdef __NR_copy_file_range
int ret, fd_in, fd_out;
fd_in = open("/tmp", O_TMPFILE|O_RDWR, S_IRUSR);
fd_out = open("/tmp", O_TMPFILE|O_WRONLY, S_IWUSR);
ret = syscall(__NR_copy_file_range, fd_in, NULL, fd_out, NULL, 0, 0);
if (ret == -1) { return 1; }
return 0;
#else
return 1;
#endif
}
],
[rb_cv_use_copy_file_range=yes],
[rb_cv_use_copy_file_range=no])])
AS_IF([test "$rb_cv_use_copy_file_range" = yes], [
AC_DEFINE(USE_COPY_FILE_RANGE)
])
])

AS_CASE(["$ac_cv_func_gettimeofday:$ac_cv_func_clock_gettime"],
[*yes*], [],
[
Expand Down
4 changes: 0 additions & 4 deletions io.c
Expand Up @@ -11074,10 +11074,6 @@ nogvl_copy_stream_wait_write(struct copy_stream_struct *stp)
return 0;
}

#if defined HAVE_COPY_FILE_RANGE || (defined __linux__ && defined __NR_copy_file_range)
# define USE_COPY_FILE_RANGE
#endif

#ifdef USE_COPY_FILE_RANGE

static ssize_t
Expand Down

0 comments on commit 012785e

Please sign in to comment.