/* $Cambridge: hermes/doc/benchmarks/SR2300-vs-EonStor/writev.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[256][4096];  /* BSS */
    struct iovec vector[256];
    int i, fd;

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

    fd = open("testfile", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0644);

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

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