1 /* 2 * Copyright (c) 1982, 1986, 1993, 1994 3 * The Regents of the University of California. All rights reserved. 4 * 5 * %sccs.include.redist.c% 6 * 7 * @(#)uio.h 8.5 (Berkeley) 02/22/94 8 */ 9 10 #ifndef _SYS_UIO_H_ 11 #define _SYS_UIO_H_ 12 13 /* 14 * XXX 15 * iov_base should be a void *. 16 */ 17 struct iovec { 18 char *iov_base; /* Base address. */ 19 size_t iov_len; /* Length. */ 20 }; 21 22 enum uio_rw { UIO_READ, UIO_WRITE }; 23 24 /* Segment flag values. */ 25 enum uio_seg { 26 UIO_USERSPACE, /* from user data space */ 27 UIO_SYSSPACE, /* from system space */ 28 UIO_USERISPACE /* from user I space */ 29 }; 30 31 #ifdef KERNEL 32 struct uio { 33 struct iovec *uio_iov; 34 int uio_iovcnt; 35 off_t uio_offset; 36 int uio_resid; 37 enum uio_seg uio_segflg; 38 enum uio_rw uio_rw; 39 struct proc *uio_procp; 40 }; 41 42 /* 43 * Limits 44 */ 45 #define UIO_MAXIOV 1024 /* max 1K of iov's */ 46 #define UIO_SMALLIOV 8 /* 8 on stack, else malloc */ 47 #endif /* KERNEL */ 48 49 #ifndef KERNEL 50 #include <sys/cdefs.h> 51 52 __BEGIN_DECLS 53 ssize_t readv __P((int, const struct iovec *, int)); 54 ssize_t writev __P((int, const struct iovec *, int)); 55 __END_DECLS 56 #endif /* !KERNEL */ 57 #endif /* !_SYS_UIO_H_ */ 58