add copy_file_range system call wrapper
authorÁrni Dagur <arni@dagur.eu>
Mon, 19 Aug 2019 23:41:14 +0000 (23:41 +0000)
committerRich Felker <dalias@aerifal.cx>
Sat, 24 Aug 2019 00:24:06 +0000 (20:24 -0400)
include/unistd.h
src/linux/copy_file_range.c [new file with mode: 0644]

index 9485da7a68ca885cb0b66e36afec91ab66979f46..b9b23a1692a598088adeab2b7ebc3f777ada5f10 100644 (file)
@@ -188,6 +188,7 @@ char *get_current_dir_name(void);
 int syncfs(int);
 int euidaccess(const char *, int);
 int eaccess(const char *, int);
+ssize_t copy_file_range(int, off_t *, int, off_t *, size_t, unsigned);
 #endif
 
 #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
diff --git a/src/linux/copy_file_range.c b/src/linux/copy_file_range.c
new file mode 100644 (file)
index 0000000..dd4b133
--- /dev/null
@@ -0,0 +1,8 @@
+#define _GNU_SOURCE
+#include <unistd.h>
+#include "syscall.h"
+
+ssize_t copy_file_range(int fd_in, off_t *off_in, int fd_out, off_t *off_out, size_t len, unsigned flags)
+{
+       return syscall(SYS_copy_file_range, fd_in, off_in, fd_out, off_out, len, flags);
+}