'\"!  tbl | mmdoc
'\"macro stdmacro
.if n .pH ddi_dki.datab @(#)datab	40.7 of 11/20/89
.\" Copyright 1989 AT&T
.de IX
.ie '\\n(.z'' .tm .Index: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9	\\n%
.el \\!.IX \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
..
.nr X
.if \nX=0 .ds x} datab D4DK "STREAMS" "DDI/DKI" "\&"
.if \nX=1 .ds x} datab D4DK "STREAMS" "DDI/DKI"
.if \nX=2 .ds x} datab D4DK "" "\&"
.if \nX=3 .ds x} datab "" "" "\&"
.TH \*(x}
.IX "\f4datab\fP(D4DK)"
.SH NAME
\f4datab\f1 \- STREAMS message data structure
.SH SYNOPSIS
\f4#include <sys/stream.h>\f1
.SH DESCRIPTION
The \f4datab\f1 structure describes the 
data of a STREAMS message.
The actual 
data contained in a STREAMS message is stored in a data buffer pointed
to by this structure. A \f4msgb\f1 (message block) structure
includes a field that points to a \f4datab\f1 structure.
.P
A data block can have more than one message block pointing to it at one time,
so the \f4db_ref\f1 member keeps track of a data block's references,
preventing it from being deallocated until all message blocks are finished
with it.
.SH STRUCTURE MEMBERS
.IX "\f4datab\fP(D4DK), structure members"
.TS
lf4p8 2 lf4p8 2 lf4p8.
union {
  struct datab	*freep;	/* routine to free non-STREAMS buffer */
  struct free_rtn	*frtnp;
} db_f;
unsigned char	*db_base;	/* first byte of buffer */
unsigned char	*db_lim;	/* last byte (+1) of buffer */
unsigned char	db_ref;	/* # of message pointers to this data */
unsigned char	db_type;	/* message type */
unsigned char	db_iswhat;	/* status of msg/data/buffer triplet */
unsigned int	db_size;	/* used internally */
caddr_t	db_msgaddr;	/* triplet mesg header; points to datab */
long	db_filler;	/* reserved for future use */
.TE
.P
A \f4datab\f1 structure is defined as type \f4dblk_t\f1.
.SH SEE ALSO
\f2BCI Driver Development Guide,\f1 Chapter 4, ``Header Files and Data Structures''
.P
.na
\f4free_rtn\f1(D4DK),
\f4msgb\f1(D4DK)
.ad
