diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/sync_file_range.c')
-rw-r--r-- | sysdeps/unix/sysv/linux/sync_file_range.c | 37 |
1 files changed, 9 insertions, 28 deletions
diff --git a/sysdeps/unix/sysv/linux/sync_file_range.c b/sysdeps/unix/sysv/linux/sync_file_range.c index a8f42146a7..2ed0d53068 100644 --- a/sysdeps/unix/sysv/linux/sync_file_range.c +++ b/sysdeps/unix/sysv/linux/sync_file_range.c @@ -1,5 +1,5 @@ /* Selective file content synch'ing. - Copyright (C) 2006-2016 Free Software Foundation, Inc. + Copyright (C) 2006-2018 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -16,37 +16,18 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ -#include <errno.h> #include <fcntl.h> -#include <sys/types.h> - #include <sysdep-cancel.h> -#include <sys/syscall.h> - -#ifdef __NR_sync_file_range int -sync_file_range (int fd, __off64_t from, __off64_t to, unsigned int flags) +sync_file_range (int fd, __off64_t offset, __off64_t len, unsigned int flags) { +#if defined (__NR_sync_file_range2) + return SYSCALL_CANCEL (sync_file_range2, fd, flags, SYSCALL_LL64 (offset), + SYSCALL_LL64 (len)); +#elif defined (__NR_sync_file_range) return SYSCALL_CANCEL (sync_file_range, fd, - __LONG_LONG_PAIR ((long) (from >> 32), (long) from), - __LONG_LONG_PAIR ((long) (to >> 32), (long) to), - flags); -} -#elif defined __NR_sync_file_range2 -int -sync_file_range (int fd, __off64_t from, __off64_t to, unsigned int flags) -{ - return SYSCALL_CANCEL (sync_file_range2, fd, flags, - __LONG_LONG_PAIR ((long) (from >> 32), (long) from), - __LONG_LONG_PAIR ((long) (to >> 32), (long) to)); -} -#else -int -sync_file_range (int fd, __off64_t from, __off64_t to, unsigned int flags) -{ - __set_errno (ENOSYS); - return -1; -} -stub_warning (sync_file_range) + __ALIGNMENT_ARG SYSCALL_LL64 (offset), + SYSCALL_LL64 (len), flags); #endif +} |