--- libaitio/example/test_aio.c 2012/08/01 09:40:10 1.1.2.3 +++ libaitio/example/test_aio.c 2012/08/02 00:38:23 1.1.2.4 @@ -8,9 +8,20 @@ int main(int argc, char **argv) { - int f, ret; + int f, ret, i; char buf[BUFSIZ]; + struct iovec iv[3]; + iv[0].iov_len = 10; + iv[0].iov_base = io_malloc(iv[0].iov_len); + iv[0].iov_len--; + iv[1].iov_len = 2; + iv[1].iov_base = io_malloc(iv[1].iov_len); + iv[1].iov_len--; + iv[2].iov_len = 20; + iv[2].iov_base = io_malloc(iv[2].iov_len); + iv[2].iov_len--; + f = open("test_aio.dat", O_CREAT | O_RDWR | O_TRUNC, 0644); if (f == -1) { perror("open"); @@ -35,6 +46,33 @@ main(int argc, char **argv) } printf("\n\n%s\n", buf); + printf("io_readv=%d\n", (ret = io_rreadv(f, iv, 3, (off_t) 0, 1))); + for (i = 0; i < 3; i++) { + printf("%d) len=%d - %s\n---\n", i, iv[i].iov_len, iv[i].iov_base); + io_free(iv[i].iov_base); + } + + iv[0].iov_base = io_strdup("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"); + iv[0].iov_len = strlen(iv[0].iov_base) + 1; + iv[1].iov_base = io_strdup("bbbbbbbbbbbbbbbb\n"); + iv[1].iov_len = strlen(iv[1].iov_base) + 1; + iv[2].iov_base = io_strdup("sdgnsjkfgbfgbfjhbjjjjjjjjjjjjjjjj\n"); + iv[2].iov_len = strlen(iv[2].iov_base) + 1; + printf("io_writev=%d\n", (ret = io_rwritev(f, iv, 3, 0, 1))); + for (i = 0; i < 3; i++) + memset(iv[i].iov_base, 0, iv[i].iov_len); + + printf("io_readv=%d\n", (ret = io_rreadv(f, iv, 3, 0, 1))); + for (i = 0; i < 3; i++) { + printf("%d) len=%d - %s\n---\n", i, iv[i].iov_len, iv[i].iov_base); + io_free(iv[i].iov_base); + } + close(f); + + /* + for (i = 0; i < 3; i++) + io_free(iv[i].iov_base); + */ return 0; }