msgb(D4)msgb(D4)NAMEmsgb - STREAMS message block structure
SYNOPSIS
#include <sys/types.h>
#include <sys/stream.h>
#include <sys/ddi.h>
DESCRIPTION
A STREAMS message is made up of one or more message blocks, referenced by
a pointer to a msgb structure. When a message is on a queue, all fields
are read-only to drivers and modules.
USAGE
Structure Definitions
The msgb structure is defined as type mblk_t and contains the following
members:
struct msgb *b_next; /* next message on queue */
struct msgb *b_prev; /* previous message on queue */
struct msgb *b_cont; /* next block in message */
uchar_t *b_rptr; /* 1st unread data byte of buffer */
uchar_t *b_wptr; /* 1st unwritten data byte of buffer */
struct datab *b_datap; /* pointer to data block */
uchar_t b_band; /* message priority */
ushort_t b_flag; /* used by stream head */
The b_next and b_prev pointers are used to link messages together on a
queue(D4). These fields can be used by drivers and modules to create
linked lists of messages.
The b_cont pointer links message blocks together when a message is
composed of more than one block. Drivers and modules can use this field
to create complex messages from single message blocks.
The b_rptr and b_wptr pointers describe the valid data region in the
associated data buffer. The b_rptr field points to the first unread byte
in the buffer and the b_wptr field points to the next byte to be written
in the buffer.
The b_datap field points to the data block [see datab(D4)] associated
with the message block. This field should never be changed by modules or
drivers.
The b_band field contains the priority band associated with the message.
Normal priority messages and high priority messages have b_band set to
zero. High priority messages are high priority by virtue of their
message type. This field can be used to alter the queuing priority of
the message. The higher the priority band, the closer to the head of the
queue the message is placed.
Page 1
msgb(D4)msgb(D4)
The b_flag field contains a bitmask of flags that can be set to alter the
way the stream head will process the message. Valid flags are:
MSGMARK The last byte in the message is ``marked.'' This condition
is testable from user level via the I_ATMARK ioctl(2).
REFERENCESallocb(D3), datab(D4), esballoc(D3), freeb(D3), free_rtn(D4),
messages(D5)
Page 2