Add preadv2/pwritev2 wrappers.

They're in glibc, though not in musl.

Also add basic doc comments to the whole of <sys/uio.h>.

Bug: http://b/203002492
Test: treehugger
Change-Id: Ic607f7f349e5b7c9bf66c25b7bd68f827da530d6
diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT
index 289eddb..22b82f1 100644
--- a/libc/SYSCALLS.TXT
+++ b/libc/SYSCALLS.TXT
@@ -97,13 +97,14 @@
 ssize_t     pwrite64|pwrite(int, void*, size_t, off_t) lp64
 
 # On LP32, preadv/pwritev don't use off64_t --- they use pairs of 32-bit
-# arguments to avoid problems on architectures like ARM where 64-bit arguments
+# arguments to avoid problems on architectures like arm32 where 64-bit arguments
 # must be in a register pair starting with an even-numbered register.
 # See linux/fs/read_write.c and https://lwn.net/Articles/311630/.
-ssize_t     __preadv64:preadv(int, const struct iovec*, int, long, long) lp32
-ssize_t     preadv|preadv64(int, const struct iovec*, int, off_t) lp64
-ssize_t     __pwritev64:pwritev(int, const struct iovec*, int, long, long) lp32
-ssize_t     pwritev|pwritev64(int, const struct iovec*, int, off_t) lp64
+# Note that there's an unused always-0 second long even on LP64!
+ssize_t     __preadv64:preadv(int, const struct iovec*, int, long, long) all
+ssize_t     __pwritev64:pwritev(int, const struct iovec*, int, long, long) all
+ssize_t     __preadv64v2:preadv2(int, const struct iovec*, int, long, long, int) all
+ssize_t     __pwritev64v2:pwritev2(int, const struct iovec*, int, long, long, int) all
 
 int         __close:close(int)  all
 pid_t       __getpid:getpid()  all