1cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin#include <fcntl.h> 2cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin#include <unistd.h> 3cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin#include <sys/uio.h> 4cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin#include <assert.h> 5cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin 6cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levinint 7cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levinmain(void) 8cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin{ 9cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin const off_t offset = 0xdefaceddeadbeefLL; 10cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin int fd; 11cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin char buf[4]; 12cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin struct iovec iov = { buf, sizeof buf }; 13cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin 14cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin assert((fd = open("/dev/zero", O_RDONLY)) >= 0); 15cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin assert(pread(fd, buf, sizeof buf, offset) == 4); 16cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin assert(preadv(fd, &iov, 1, offset) == 4); 17cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin assert(!close(fd)); 18cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin 19cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin assert((fd = open("/dev/null", O_WRONLY)) >= 0); 20cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin assert(pwrite(fd, buf, sizeof buf, offset) == 4); 21cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin assert(pwritev(fd, &iov, 1, offset) == 4); 22cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin assert(!close(fd)); 23cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin 24cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin return 0; 25cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin} 26