#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;
}