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

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <aitio.h>


int
main(int argc, char **argv)
{
	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");
		return 1;
	}

	while (!feof(stdin)) {
		memset(buf, 0, sizeof buf);
		fgets(buf, sizeof buf, stdin);
		printf("io_write=%d\n", (ret = io_write(f, buf, strlen(buf))));
		if (ret == -1) {
			ioLIBERR(io);
			return 2;
		}
	}

	memset(buf, 0, sizeof buf);
	printf("io_read=%d\n", (ret = io_rread(f, buf, sizeof buf, 0, 0)));
	if (ret == -1) {
		ioLIBERR(io);
		return 3;
	}
	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;
}

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>