File:  [ELWIX - Embedded LightWeight unIX -] / libaitio / example / test_aio.c
Revision 1.3: download - view: text, annotated - select for diffs - revision graph
Wed Mar 13 14:54:38 2013 UTC (11 years, 2 months ago) by misho
Branches: MAIN
CVS tags: io7_4, io7_3, io7_2, io7_1, io7_0, io6_9, io6_8, io6_7, io6_6, io6_5, io6_4, io6_3, io6_2, io6_1, io6_0, io5_9, io5_8, io5_7, io5_6, io5_5, io5_4, io5_3, io5_2, io5_1, IO7_3, IO7_2, IO7_1, IO7_0, IO6_9, IO6_8, IO6_7, IO6_6, IO6_5, IO6_4, IO6_3, IO6_2, IO6_1, IO6_0, IO5_9, IO5_8, IO5_7, IO5_6, IO5_5, IO5_4, IO5_3, IO5_2, IO5_1, IO5_0, HEAD
version 5.0

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <elwix.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 = e_malloc(iv[0].iov_len);
	iv[0].iov_len--;
	iv[1].iov_len = 2;
	iv[1].iov_base = e_malloc(iv[1].iov_len);
	iv[1].iov_len--;
	iv[2].iov_len = 20;
	iv[2].iov_base = e_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) {
			ELIBERR(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) {
		ELIBERR(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);
		e_free(iv[i].iov_base);
	}

	iv[0].iov_base = e_strdup("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n");
	iv[0].iov_len = strlen(iv[0].iov_base) + 1;
	iv[1].iov_base = e_strdup("bbbbbbbbbbbbbbbb\n");
	iv[1].iov_len = strlen(iv[1].iov_base) + 1;
	iv[2].iov_base = e_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);
		e_free(iv[i].iov_base);
	}

	close(f);

	/*
	for (i = 0; i < 3; i++)
		e_free(iv[i].iov_base);
		*/
	return 0;
}

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