5 #define __NR_splice 313
7 #elif defined(__x86_64__)
8 #define __NR_splice 275
10 #elif defined(__powerpc__) || defined(__powerpc64__)
11 #define __NR_splice 283
13 #elif defined(__ia64__)
14 #define __NR_splice 1297
17 #error unsupported arch
20 #define SPLICE_F_MOVE (0x01) /* move pages instead of copying */
21 #define SPLICE_F_NONBLOCK (0x02) /* don't block on the pipe splicing (but */
22 /* we may still block on the fd we splice */
23 /* from/to, of course */
24 #define SPLICE_F_MORE (0x04) /* expect more data */
26 static inline int splice(int fdin, loff_t *off_in, int fdout, loff_t *off_out,
27 size_t len, unsigned long flags)
29 return syscall(__NR_splice, fdin, off_in, fdout, off_out, len, flags);
33 static inline int tee(int fdin, int fdout, size_t len, unsigned int flags)
35 return syscall(__NR_tee, fdin, fdout, len, flags);
38 #define SPLICE_SIZE (64*1024)
40 #define BUG_ON(c) assert(!(c))
45 (void) (&_x == &_y); \
51 (void) (&_x == &_y); \
54 static inline int error(const char *n)