فهرست منبع

add fallocate (nonstandardized) function

this is equivalent to posix_fallocate except that it has an extra
mode/flags argument to control its behavior, and stores the error in
errno rather than returning an error code.
Rich Felker 12 سال پیش
والد
کامیت
adb88e773b
2فایلهای تغییر یافته به همراه12 افزوده شده و 0 حذف شده
  1. 3 0
      include/fcntl.h
  2. 9 0
      src/fcntl/fallocate.c

+ 3 - 0
include/fcntl.h

@@ -116,10 +116,13 @@ struct f_owner_ex {
 	int type;
 	pid_t pid;
 };
+#define FALLOC_FL_KEEP_SIZE 1
+#define FALLOC_FL_PUNCH_HOLE 2
 #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 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

+ 9 - 0
src/fcntl/fallocate.c

@@ -0,0 +1,9 @@
+#define _GNU_SOURCE
+#include <fcntl.h>
+#include "syscall.h"
+
+int fallocate(int fd, int mode, off_t base, off_t len)
+{
+	return syscall(SYS_fallocate, fd, mode, __SYSCALL_LL_E(base),
+		__SYSCALL_LL_E(len));
+}