#include #include static long ioreadv(int fd, IOchunk *io, int nio, vlong offset) { int i; long m, n, tot; char *buf, *p; tot = 0; for(i=0; ilen; if(m > n) m = n; memmove(io->addr, p, m); n -= m; p += m; io++; } free(buf); return tot; } long readv(int fd, IOchunk *io, int nio) { return ioreadv(fd, io, nio, -1LL); } long preadv(int fd, IOchunk *io, int nio, vlong off) { return ioreadv(fd, io, nio, off); }