|
|
1.1 root 1: #ifndef __SYS_UIO_H__
2: #define __SYS_UIO_H__
3:
4: /*
5: * This file defines the uio_t data structure used to control a scatter/gather
6: * I/O request under the System V DDI/DKI. Drivers should follow the DDI/DKI
7: * guidelines with respect to this structure by not directly modifying any
8: * members. The only permitted use of this structure is to initialise members
9: * of a driver-created uio_t to pass to the DDI/DKI library functions.
10: */
11: /*
12: *-IMPORTS
13: * <common/ccompat.h>
14: * __EXTERN_C_BEGIN__
15: * __EXTERN_C_END__
16: * __PROTO ()
17: * <sys/types.h>
18: * caddr_t
19: * off_t
20: */
21:
22: #include <common/ccompat.h>
23: #include <sys/types.h>
24:
25:
26: typedef struct uio uio_t;
27: typedef struct iovec iovec_t;
28:
29: /*
30: * Note that the definition of this structure in the DDI/DKI allows the
31: * routines uiomove (), ureadc () and uwritec () license to maintain all kinds
32: * of cached state about iovec's once I/O through a uio structure has been
33: * initiated. For now, we don't define any such state, but note that it may
34: * be added.
35: */
36:
37: struct uio {
38: iovec_t * uio_iov; /* start of the iovec array */
39: int uio_iovcnt; /* number of iovecs in the array */
40: off_t uio_offset; /* offset into file/device */
41: short uio_segflg; /* type of I/O transfer */
42: short uio_fmode; /* file mode flags (see <sys/file.h>) */
43: int uio_resid; /* residual count */
44: };
45:
46: struct iovec {
47: caddr_t iov_base; /* base address of storage area */
48: int iov_len; /* size of the storage area in bytes */
49: };
50:
51:
52: /*
53: * Values for "uio_segflg"
54: */
55:
56: enum {
57: UIO_USERSPACE,
58: UIO_SYSSPACE
59: };
60:
61: typedef enum {
62: UIO_READ,
63: UIO_WRITE
64: } uio_rw_t;
65:
66:
67: __EXTERN_C_BEGIN__
68:
69: int uiomove __PROTO ((caddr_t _addr, long _nbytes,
70: uio_rw_t _rwflag, uio_t * _uiop));
71: int ureadc __PROTO ((int _c, uio_t * _uiop));
72: int uwritec __PROTO ((uio_t * uiop));
73:
74: __EXTERN_C_END__
75:
76: #endif /* ! defined (__SYS_UIO_H__) */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.