diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/sync_file_range.c')
-rw-r--r-- | sysdeps/unix/sysv/linux/sync_file_range.c | 35 |
1 files changed, 8 insertions, 27 deletions
diff --git a/sysdeps/unix/sysv/linux/sync_file_range.c b/sysdeps/unix/sysv/linux/sync_file_range.c index a8f42146a7..89f21e6009 100644 --- a/sysdeps/unix/sysv/linux/sync_file_range.c +++ b/sysdeps/unix/sysv/linux/sync_file_range.c @@ -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 +} |