#error unsupported arch
#endif
+#ifndef SPLICE_F_MOVE
+
#define SPLICE_F_MOVE (0x01) /* move pages instead of copying */
#define SPLICE_F_NONBLOCK (0x02) /* don't block on the pipe splicing (but */
/* we may still block on the fd we splice */
#define SPLICE_F_MORE (0x04) /* expect more data */
#define SPLICE_F_GIFT (0x08) /* pages passed in are a gift */
-static inline int splice(int fdin, loff_t *off_in, int fdout, loff_t *off_out,
- size_t len, unsigned long flags)
+#endif /* SPLICE_F_MOVE defined */
+
+/*
+ * SPLICE_F_UNMAP was introduced later, so check for that seperately
+ */
+#ifndef SPLICE_F_UNMAP
+#define SPLICE_F_UNMAP (0x10) /* undo vmsplice map */
+#endif
+
+static inline int ssplice(int fdin, loff_t *off_in, int fdout, loff_t *off_out,
+ size_t len, unsigned int flags)
{
return syscall(__NR_sys_splice, fdin, off_in, fdout, off_out, len, flags);
}
-static inline int tee(int fdin, int fdout, size_t len, unsigned int flags)
+static inline int stee(int fdin, int fdout, size_t len, unsigned int flags)
{
return syscall(__NR_sys_tee, fdin, fdout, len, flags);
}
-static inline int vmsplice(int fd, const struct iovec *iov,
- unsigned long nr_segs, unsigned int flags)
+static inline int svmsplice(int fd, const struct iovec *iov,
+ unsigned long nr_segs, unsigned int flags)
{
return syscall(__NR_sys_vmsplice, fd, iov, nr_segs, flags);
}