sq splice1.c
authorStefan Metzmacher <metze@samba.org>
Thu, 9 Feb 2023 13:45:58 +0000 (14:45 +0100)
committerStefan Metzmacher <metze@samba.org>
Mon, 16 Oct 2023 11:03:54 +0000 (13:03 +0200)
splice1.c

index 9462a5c87daa42a00c617ca405a63e1c4dcd1d8c..96a3c7950673946f4b60828727f51bc3a28f6acd 100644 (file)
--- a/splice1.c
+++ b/splice1.c
@@ -4,54 +4,52 @@
 #include <string.h>
 #include <unistd.h>
 #include <fcntl.h>
+#include <limits.h>
 
 int main(void)
 {
        int ffd;
        int pfds[2];
-#define BUF_SIZE 4096
-       char buf [BUF_SIZE] = {0, };
-       char buf2 [BUF_SIZE] = {0, };
+       char buf [PIPE_BUF] = {0, };
+       char buf2 [PIPE_BUF] = {0, };
        ssize_t sret;
        int ret;
        off_t ofs;
 
-       memset(buf, 0x1f, BUF_SIZE);
+       memset(buf, 0x1f, PIPE_BUF);
 
-       ffd = open("/tmp/",
-                  O_RDWR | O_TMPFILE,
-                  S_IRUSR | S_IWUSR);
+       ffd = open("/tmp/", O_RDWR | O_TMPFILE, S_IRUSR | S_IWUSR);
        printf("open(O_TMPFILE) => ffd[%d]\n", ffd);
 
-       sret = pwrite(ffd, buf, BUF_SIZE, BUF_SIZE);
-       printf("pwrite(count=BUF_SIZE,ofs=BUF_SIZE) 0x1f sret[%zd]\n", sret);
+       sret = pwrite(ffd, buf, PIPE_BUF, PIPE_BUF);
+       printf("pwrite(count=PIPE_BUF,ofs=PIPE_BUF) 0x1f sret[%zd]\n", sret);
 
        ret = pipe(pfds);
        printf("pipe() => ret[%d]\n", ret);
 
        ofs = 0;
-       sret = splice(ffd, &ofs, pfds[1], NULL, BUF_SIZE*2, SPLICE_F_MOVE);
-       printf("splice(count=BUF_SIZE*2,ofs=0) sret[%zd]\n", sret);
+       sret = splice(ffd, &ofs, pfds[1], NULL, PIPE_BUF*2, SPLICE_F_MOVE);
+       printf("splice(count=PIPE_BUF*2,ofs=0) sret[%zd]\n", sret);
 
-       memset(buf, 0xf0, BUF_SIZE);
+       memset(buf, 0xf0, PIPE_BUF);
 
-       sret = pwrite(ffd, buf, BUF_SIZE, 0);
-       printf("pwrite(count=BUF_SIZE,ofs=0) 0xf0 sret[%zd]\n", sret);
-       sret = pwrite(ffd, buf, BUF_SIZE, BUF_SIZE);
-       printf("pwrite(count=BUF_SIZE,ofs=BUF_SIZE) 0xf0 sret[%zd]\n", sret);
+       sret = pwrite(ffd, buf, PIPE_BUF, 0);
+       printf("pwrite(count=PIPE_BUF,ofs=0) 0xf0 sret[%zd]\n", sret);
+       sret = pwrite(ffd, buf, PIPE_BUF, PIPE_BUF);
+       printf("pwrite(count=PIPE_BUF,ofs=PIPE_BUF) 0xf0 sret[%zd]\n", sret);
 
-       sret = read(pfds[0], buf, BUF_SIZE);
-       printf("read(count=BUF_SIZE,ofs=0) sret[%zd]\n", sret);
+       sret = read(pfds[0], buf, PIPE_BUF);
+       printf("read(count=PIPE_BUF,ofs=0) sret[%zd]\n", sret);
 
-       memset(buf2, 0x00, BUF_SIZE);
-       ret = memcmp(buf, buf2, BUF_SIZE);
+       memset(buf2, 0x00, PIPE_BUF);
+       ret = memcmp(buf, buf2, PIPE_BUF);
        printf("memcmp() at ofs=0, expecting 0x00 => ret[%d]\n", ret);
 
-       sret = read(pfds[0], buf, BUF_SIZE);
-       printf("read(count=BUF_SIZE,ofs=BUF_SIZE) sret[%zd]\n", sret);
+       sret = read(pfds[0], buf, PIPE_BUF);
+       printf("read(count=PIPE_BUF,ofs=PIPE_BUF) sret[%zd]\n", sret);
 
-       memset(buf2, 0x1f, BUF_SIZE);
-       ret = memcmp(buf, buf2, BUF_SIZE);
-       printf("memcmp() at ofs=BUF_SIZE, expecting 0x1f => ret[%d]\n", ret);
+       memset(buf2, 0x1f, PIPE_BUF);
+       ret = memcmp(buf, buf2, PIPE_BUF);
+       printf("memcmp() at ofs=PIPE_BUF, expecting 0x1f => ret[%d]\n", ret);
        return 0;
 }