xref: /original-bsd/sys/sys/uio.h (revision f737e041)
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