| #ifndef _ROS_SYS_UIO_H | 
 | #define _ROS_SYS_UIO_H | 
 |  | 
 | #include <sys/types.h> | 
 |  | 
 | typedef long off_t; | 
 |  | 
 | enum uio_rw { | 
 | 	UIO_READ, | 
 | 	UIO_WRITE | 
 | }; | 
 |  | 
 | /* Segment flag values. */ | 
 | enum uio_seg { | 
 | 	UIO_USERSPACE,		/* from user data space */ | 
 | 	UIO_SYSSPACE,		/* from system space */ | 
 | 	UIO_NOCOPY		/* don't copy, already in object */ | 
 | }; | 
 |  | 
 | // Straight out of bsd definition | 
 | struct iovec { | 
 |     void    *iov_base;  /* Base address. */ | 
 |     size_t   iov_len;   /* Length. */ | 
 | }; | 
 |  | 
 | struct uio { | 
 | 	struct	iovec *uio_iov;		/* scatter/gather list */ | 
 | 	int	uio_iovcnt;		/* length of scatter/gather list */ | 
 | 	off_t	uio_offset;		/* offset in target object */ | 
 | 	ssize_t	uio_resid;		/* remaining bytes to process */ | 
 | 	enum	uio_seg uio_segflg;	/* address space */ | 
 | 	enum	uio_rw uio_rw;		/* operation */ | 
 | 	struct	proc *uio_proc;		/* owner */ | 
 | }; | 
 |  | 
 |  | 
 |  | 
 | #endif |