about summary refs log tree commit diff
diff options
context:
space:
mode:
authorÁrni Dagur <arni@dagur.eu>2019-08-19 23:41:14 +0000
committerRich Felker <dalias@aerifal.cx>2019-08-23 20:24:06 -0400
commitf76e183111bc4491ee575c3e2fcc793412acff4e (patch)
tree310bfc7e3b28c5bdc886631a6a90a0cae9373f67
parent6ad514e4e278f0c3b18eb2db1d45638c9af1c07f (diff)
downloadmusl-f76e183111bc4491ee575c3e2fcc793412acff4e.tar.gz
musl-f76e183111bc4491ee575c3e2fcc793412acff4e.tar.xz
musl-f76e183111bc4491ee575c3e2fcc793412acff4e.zip
add copy_file_range system call wrapper
-rw-r--r--include/unistd.h1
-rw-r--r--src/linux/copy_file_range.c8
2 files changed, 9 insertions, 0 deletions
diff --git a/include/unistd.h b/include/unistd.h
index 9485da7a..b9b23a16 100644
--- a/include/unistd.h
+++ b/include/unistd.h
@@ -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
index 00000000..dd4b1333
--- /dev/null
+++ b/src/linux/copy_file_range.c
@@ -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);
+}