.TH "DDI/DKI data structures" "" "" "Overview"
.PC
.PP
The \*(CO implementation of DDI/DKI and \*(ST uses the
following data structures:
.nf
.sp \n(pDu
.ta 1.5i
.tc . 0.1i
\fBcopyreq\fR	Structure for a request for a \*(ST transparent ioctl copy
\fBcopyresp\fR	Structure for responding to \*(ST transparent ioctl copy
\fBdatab\fR	Structure for a \*(ST data-block structure
\fBfree_rtn\fR	The free-message routine
\fBiocblk\fR	ioctl structure
\fBiovec\fR	Data-storage structure for scatter/gather I/O
\fBlinkblk\fR	Multiplexor link structure
\fBlkinfo\fR	Information about a lock
\fBmodule_info\fR	Information about a \*(ST driver or module
\fBmsgb\fR	Message block structure
\fBpollhead\fR	Structure for a \*(ST poll head
\fBqinit\fR	Initialization for queues
\fBqueue\fR	Queue structure
\fBstreamtab\fR	Driver/module declaration
\fBstroptions\fR	Structure for stream-head options
\fBuio\fR	Organize scatter/gather I/O requests
.fi
.PP
Note that each structure contains many more fields than those that are
documented in this manual.
However, no driver or module can manipulate any field in
any structure other than those documented in this manual.
Doing so risks corrupting kernel memory.
.PP
Note, too, that each structure has its own ``legal'' origin, as follows:
.sp \n(pDu
.nf
.ta 1.5i
.tc . 0.1i
\fBcopyreq\fR	Overlay an \fBM_IOCTL\fR or \fBM_IOCDATA\fR \*(ST message
\fBcopyresp\fR	Not created by the driver
\fBdatab\fR	Allocated when \fBmblk_t\fRs are allocated by kernel
\fBfree_rtn\fR	Allocated by driver
\fBiocblk\fR	Not created by the driver
\fBiovec\fR	May be driver-allocated at present
\fBlinkblk\fR	Not created by the driver
\fBlkinfo\fR	Allocated by driver
\fBmodule_info\fR	Statically allocated in driver source
\fBmsgb\fR	Allocated only by \fBallocb()\fR or \fBesballoc()\fR
\fBqinit\fR	Statically allocated in driver source
\fBqueue\fR	Not created by the driver
\fBstreamtab\fR	Statically allocated in driver source
\fBstroptions\fR	Built by driver in \*(ST message memory
\fBuio\fR	May be driver-allocated at present
.fi
.PP
The kernel cannot police a driver to ensure that it does not create its
own versions of these structures on the sly; however, doing so
may corrupt kernel memory.
.SH "See Also"
.B
device driver,
STREAMS
.R
