File:  [ELWIX - Embedded LightWeight unIX -] / libaitio / example / test_aio.c
Revision 1.2: download - view: text, annotated - select for diffs - revision graph
Thu Aug 2 00:47:46 2012 UTC (11 years, 10 months ago) by misho
Branches: MAIN
CVS tags: io5_0, io4_1, io4_0, io3_9, io3_8, io3_7, io3_6, IO4_1, IO4_0, IO3_9, IO3_8, IO3_7, IO3_6, IO3_5, HEAD
version 3.5

    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>