stroptions(D4)stroptions(D4)NAMEstroptions - stream head option structure
SYNOPSIS
#include <sys/stream.h>
#include <sys/stropts.h>
#include <sys/ddi.h>
DESCRIPTION
The stroptions structure, used in an M_SETOPTS message, contains options
for the stream head.
USAGE
The M_SETOPTS message is sent upstream by drivers and modules when they
want to change stream head options for their stream.
Structure Definitions
The stroptions structure contains the following members:
ulong_t so_flags; /* options to set */
short so_readopt; /* read option */
ushort_t so_wroff; /* write offset */
long so_minpsz; /* minimum read packet size */
long so_maxpsz; /* maximum read packet size */
ulong_t so_hiwat; /* read queue high water mark */
ulong_t so_lowat; /* read queue low water mark */
uchar_t so_band; /* band for water marks */
The so_flags field determines which options are to be set, and which of
the other fields in the structure are used. This field is a bitmask and
is comprised of the bit-wise OR of the following flags:
SO_READOPT Set the read option to that specified by the
so_readopt field.
SO_WROFF Set the write offset to that specified by the
so_wroff field.
SO_MINPSZ Set the minimum packet size on the stream head read
queue to that specified by the so_minpsz field.
SO_MAXPSZ Set the maximum packet size on the stream head read
queue to that specified by the so_maxpsz field.
SO_HIWAT Set the high water mark on the stream head read
queue to that specified by the so_hiwat field.
SO_LOWAT Set the low water mark on the stream head read queue
to that specified by the so_lowat field.
SO_ALL Set all of the above options (SO_READOPT | SO_WROFF
| SO_MINPSZ | SO_MAXPSZ | SO_HIWAT | SO_LOWAT).
Page 1
stroptions(D4)stroptions(D4)
SO_MREADON Turn on generation of M_READ messages by the stream
head.
SO_MREADOFF Turn off generation of M_READ messages by the stream
head.
SO_NDELON Use old TTY semantics for no-delay reads and writes.
SO_NDELOFF Use STREAMS semantics for no-delay reads and writes.
SO_ISTTY The stream is acting as a terminal.
SO_ISNTTY The stream is no longer acting as a terminal.
SO_TOSTOP Stop processes on background writes to this stream.
SO_TONSTOP Don't stop processes on background writes to this
stream.
SO_BAND The water marks changes affect the priority band
specified by the so_band field.
The so_readopt field specifies options for the stream head that alter the
way it handles read(2) calls. This field is a bitmask whose flags are
grouped in sets. Within a set, the flags are mutually exclusive. The
first set of flags determines how data messages are treated when they are
read:
RNORM Normal (byte stream) mode. read returns the lesser
of the number of bytes asked for and the number of
bytes available. Messages with partially read data
are placed back on the head of the stream head read
queue. This is the default behavior.
RMSGD Message discard mode. read returns the lesser of
the number of bytes asked for and the number of
bytes in the first message on the stream head read
queue. Messages with partially read data are freed.
RMSGN Message non-discard mode. read returns the lesser
of the number of bytes asked for and the number of
bytes in the first message on the stream head read
queue. Messages with partially read data are placed
back on the head of the stream head read queue.
The second set of flags determines how protocol messages (M_PROTO and
M_PCPROTO) are treated during a read:
RPROTNORM Normal mode. read fails with the error code EBADMSG
if there is a protocol message at the front of the
stream head read queue. This is the default
behavior.
Page 2
stroptions(D4)stroptions(D4)
RPROTDIS Protocol discard mode. read discards the M_PROTO or
M_PCPROTO portions of the message and return any
M_DATA portions that may be present. M_PASSFP
messages are also freed in this mode.
RPROTDAT Protocol data mode. read treats the M_PROTO or
M_PCPROTO portions of the message as if they were
normal data (that is, they are delivered to the
user.)
The so_wroff field specifies a byte offset to be included in the first
message block of every M_DATA message created by a write(2) and the first
M_DATA message block created by each call to putmsg(2).
The so_minpsz field specifies the minimum packet size for the stream head
read queue.
The so_maxpsz field specifies the maximum packet size for the stream head
read queue.
The so_hiwat field specifies the high water mark for the stream head read
queue.
The so_lowat field specifies the low water mark for the stream head read
queue.
The so_band field specifies the priority band to which the high and/or
low water mark changes should be applied.
REFERENCESdatab(D4), messages(D5), msgb(D4), read(2), streamio(7)
Page 3