Annotation of libaitio/example/test_aio.c, revision 1.2
1.2 ! misho 1: #include <stdio.h>
! 2: #include <string.h>
! 3: #include <unistd.h>
! 4: #include <fcntl.h>
! 5: #include <aitio.h>
! 6:
! 7:
! 8: int
! 9: main(int argc, char **argv)
! 10: {
! 11: int f, ret, i;
! 12: char buf[BUFSIZ];
! 13: struct iovec iv[3];
! 14:
! 15: iv[0].iov_len = 10;
! 16: iv[0].iov_base = io_malloc(iv[0].iov_len);
! 17: iv[0].iov_len--;
! 18: iv[1].iov_len = 2;
! 19: iv[1].iov_base = io_malloc(iv[1].iov_len);
! 20: iv[1].iov_len--;
! 21: iv[2].iov_len = 20;
! 22: iv[2].iov_base = io_malloc(iv[2].iov_len);
! 23: iv[2].iov_len--;
! 24:
! 25: f = open("test_aio.dat", O_CREAT | O_RDWR | O_TRUNC, 0644);
! 26: if (f == -1) {
! 27: perror("open");
! 28: return 1;
! 29: }
! 30:
! 31: while (!feof(stdin)) {
! 32: memset(buf, 0, sizeof buf);
! 33: fgets(buf, sizeof buf, stdin);
! 34: printf("io_write=%d\n", (ret = io_write(f, buf, strlen(buf))));
! 35: if (ret == -1) {
! 36: ioLIBERR(io);
! 37: return 2;
! 38: }
! 39: }
! 40:
! 41: memset(buf, 0, sizeof buf);
! 42: printf("io_read=%d\n", (ret = io_rread(f, buf, sizeof buf, 0, 0)));
! 43: if (ret == -1) {
! 44: ioLIBERR(io);
! 45: return 3;
! 46: }
! 47: printf("\n\n%s\n", buf);
! 48:
! 49: printf("io_readv=%d\n", (ret = io_rreadv(f, iv, 3, (off_t) 0, 1)));
! 50: for (i = 0; i < 3; i++) {
! 51: printf("%d) len=%d - %s\n---\n", i, iv[i].iov_len, iv[i].iov_base);
! 52: io_free(iv[i].iov_base);
! 53: }
! 54:
! 55: iv[0].iov_base = io_strdup("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n");
! 56: iv[0].iov_len = strlen(iv[0].iov_base) + 1;
! 57: iv[1].iov_base = io_strdup("bbbbbbbbbbbbbbbb\n");
! 58: iv[1].iov_len = strlen(iv[1].iov_base) + 1;
! 59: iv[2].iov_base = io_strdup("sdgnsjkfgbfgbfjhbjjjjjjjjjjjjjjjj\n");
! 60: iv[2].iov_len = strlen(iv[2].iov_base) + 1;
! 61: printf("io_writev=%d\n", (ret = io_rwritev(f, iv, 3, 0, 1)));
! 62: for (i = 0; i < 3; i++)
! 63: memset(iv[i].iov_base, 0, iv[i].iov_len);
! 64:
! 65: printf("io_readv=%d\n", (ret = io_rreadv(f, iv, 3, 0, 1)));
! 66: for (i = 0; i < 3; i++) {
! 67: printf("%d) len=%d - %s\n---\n", i, iv[i].iov_len, iv[i].iov_base);
! 68: io_free(iv[i].iov_base);
! 69: }
! 70:
! 71: close(f);
! 72:
! 73: /*
! 74: for (i = 0; i < 3; i++)
! 75: io_free(iv[i].iov_base);
! 76: */
! 77: return 0;
! 78: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>