From: Rich Felker Date: Sat, 8 Sep 2012 04:58:25 +0000 (-0400) Subject: add linux sync_file_range syscall X-Git-Tag: v0.9.5~39 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=00e6bbcc05403aec1c96674c1060d54f5f237e87;p=oweals%2Fmusl.git add linux sync_file_range syscall --- diff --git a/include/fcntl.h b/include/fcntl.h index b8d8702e..cfdccd9b 100644 --- a/include/fcntl.h +++ b/include/fcntl.h @@ -118,12 +118,16 @@ struct f_owner_ex { }; #define FALLOC_FL_KEEP_SIZE 1 #define FALLOC_FL_PUNCH_HOLE 2 +#define SYNC_FILE_RANGE_WAIT_BEFORE 1 +#define SYNC_FILE_RANGE_WRITE 2 +#define SYNC_FILE_RANGE_WAIT_AFTER 4 #define SPLICE_F_MOVE 1 #define SPLICE_F_NONBLOCK 2 #define SPLICE_F_MORE 4 #define SPLICE_F_GIFT 8 int fallocate(int, int, off_t, off_t); ssize_t readahead(int, off_t, size_t); +int sync_file_range(int, off_t, off_t, unsigned); ssize_t vmsplice(int, const struct iovec *, size_t, unsigned); ssize_t splice(int, off_t *, int, off_t *, size_t, unsigned); #define loff_t off_t diff --git a/src/linux/sync_file_range.c b/src/linux/sync_file_range.c new file mode 100644 index 00000000..739e602a --- /dev/null +++ b/src/linux/sync_file_range.c @@ -0,0 +1,16 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int sync_file_range(int fd, off_t pos, off_t len, unsigned flags) +{ +#if defined(SYS_sync_file_range2) + return syscall(SYS_sync_file_range2, fd, flags, + __SYSCALL_LL_E(pos), __SYSCALL_LL_E(len)); +#elif defined(SYS_sync_file_range) + return syscall(SYS_sync_file_range, fd, + __SYSCALL_LL_O(pos), __SYSCALL_LL_E(len), flags); +#else + return __syscall_ret(-ENOSYS); +#endif +}