'\"!  tbl | mmdoc
'\"macro stdmacro
.if n .pH ddi_dki.queue @(#)queue	40.6 of 10/10/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} queue D4DK "STREAMS" "DDI/DKI" "\&"
.if \nX=1 .ds x} queue D4DK "STREAMS" "DDI/DKI"
.if \nX=2 .ds x} queue D4DK "" "\&"
.if \nX=3 .ds x} queue "" "" "\&"
.TH \*(x}
.IX "\f4queue\fP(D4DK)"
.SH NAME
\f4queue\f1 \- STREAMS queue structure
.SH SYNOPSIS
\f4#include <sys/stream.h>\f1
.SH DESCRIPTION
A STREAMS driver or module consists of two \f4queue\f1 structures, one
for upstream processing (read) and one for downstream processing
(write).  This structure is the major building block of a stream. 
It contains pointers to the processing procedures, pointers to the
next and previous queues in the stream, flow control parameters, and
a pointer defining the position of its messages on the STREAMS
scheduler list. 
.P
The \f4queue\f1 structure is defined as type \f4queue_t\f1.
.SH STRUCTURE MEMBERS
.TS
lf4p8 2 lf4p8 2 lf4p8.
struct qinit	*q_qinfo;	/* module or driver entry points */
struct msgb	*q_first;	/* first message in queue */
struct msgb	*q_last;	/* last message in queue */
struct queue	*q_next;	/* next queue in stream */
struct queue	*q_link;	/* used internally */
_VOID	q_ptr;	/* pointer to private data structure */
ulong	q_count;	/* approximate size of message queue */
ulong	q_flag;	/* status of queue */
long	q_minpsiz;	/* smallest packet accepted by QUEUE */
long	q_maxpsiz;	/* largest packet accepted by QUEUE */
ulong	q_hiwat;	/* high water mark */
ulong	q_lowat;	/* low water mark */
struct qband	*q_bandp;	/* separate flow info */
unsigned char	q_nband;	/* number of priority band > 0 */
unsigned char	q_pad1[3];	/* reserved for future use */
long	q_pad2[2];	/* reserved for future use */
.TE
.SH SEE ALSO
.na
\f4msgb\f1(D4DK),
\f4qband\f1(D4DK)
.ad
