#define __NEED_pid_t
#define __NEED_mode_t
+#ifdef _GNU_SOURCE
+#define __NEED_size_t
+#define __NEED_ssize_t
+#define __NEED_struct_iovec
+#endif
+
#include <bits/alltypes.h>
#include <bits/fcntl.h>
#define FNONBLOCK O_NONBLOCK
#define FNDELAY O_NDELAY
-#ifndef F_OK
#define F_OK 0
#define R_OK 4
#define W_OK 2
#define F_LOCK 1
#define F_TLOCK 2
#define F_TEST 3
+
int lockf(int, int, off_t);
#endif
+
+#if defined(_GNU_SOURCE)
+#define F_OWNER_TID 0
+#define F_OWNER_PID 1
+#define F_OWNER_PGRP 2
+#define F_OWNER_GID 2
+struct f_owner_ex {
+ int type;
+ pid_t pid;
+};
+#define SPLICE_F_MOVE 1
+#define SPLICE_F_NONBLOCK 2
+#define SPLICE_F_MORE 4
+#define SPLICE_F_GIFT 8
+ssize_t vmsplice(int, const struct iovec *, size_t, unsigned);
+ssize_t splice(int, off_t *, int, off_t *, size_t, unsigned);
#endif
-#ifdef _LARGEFILE64_SOURCE
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
#define open64 open
#define openat64 openat
#define creat64 creat