Bit ops
[akaros.git] / kern / include / sys / uio.h
1 #ifndef _ROS_SYS_UIO_H
2 #define _ROS_SYS_UIO_H
3
4 #include <sys/types.h>
5
6 typedef long off_t;
7
8 enum uio_rw {
9         UIO_READ,
10         UIO_WRITE
11 };
12
13 /* Segment flag values. */
14 enum uio_seg {
15         UIO_USERSPACE,          /* from user data space */
16         UIO_SYSSPACE,           /* from system space */
17         UIO_NOCOPY              /* don't copy, already in object */
18 };
19
20 // Straight out of bsd definition
21 struct iovec {
22     void    *iov_base;  /* Base address. */
23     size_t   iov_len;   /* Length. */
24 };
25
26 struct uio {
27         struct  iovec *uio_iov;         /* scatter/gather list */
28         int     uio_iovcnt;             /* length of scatter/gather list */
29         off_t   uio_offset;             /* offset in target object */
30         ssize_t uio_resid;              /* remaining bytes to process */
31         enum    uio_seg uio_segflg;     /* address space */
32         enum    uio_rw uio_rw;          /* operation */
33         struct  proc *uio_proc;         /* owner */
34 };
35
36
37
38 #endif