浏览代码

add copy_file_range system call wrapper

Árni Dagur 5 年之前
父节点
当前提交
f76e183111
共有 2 个文件被更改,包括 9 次插入0 次删除
  1. 1 0
      include/unistd.h
  2. 8 0
      src/linux/copy_file_range.c

+ 1 - 0
include/unistd.h

@@ -188,6 +188,7 @@ char *get_current_dir_name(void);
 int syncfs(int);
 int syncfs(int);
 int euidaccess(const char *, int);
 int euidaccess(const char *, int);
 int eaccess(const char *, int);
 int eaccess(const char *, int);
+ssize_t copy_file_range(int, off_t *, int, off_t *, size_t, unsigned);
 #endif
 #endif
 
 
 #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
 #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)

+ 8 - 0
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);
+}