/* $Cambridge: hermes/doc/benchmarks/SR2300-vs-EonStor/read.c,v 1.1 2003/10/19 19:43:05 dpc22 Exp $ */

#define _GNU_SOURCE   /* For LARGEFILE support */

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/uio.h>

int main()
{
    static char bufs[1024][1024];  /* BSS */
    struct iovec vector[1024];
    int i, fd;

    for (i=0 ; i < 1024 ; i++) {
        vector[i].iov_base = bufs[i];
        vector[i].iov_len  = 1024;
    }

    if ((fd=open("testfile", 0644, O_RDONLY|O_LARGEFILE)) < 0) {
        fprintf(stderr, "Failed to open testfile: %s", strerror(errno));
        exit(1);
    }

    for (i=0 ; i < 2048 ; i++) {
        if (readv(fd, vector, 1024) < 0) {
            fprintf(stderr, "writev() failed: %s\n", strerror(errno));
            exit(1);
        }
    }
    fsync(fd);
    close(fd);
}
