stroptions(D4DK) —
.IX \f4stroptions\fP(D4DK)
NAME
stroptions − stream head option structure
SYNOPSIS
#include <sys/stream.h>
#include <sys/stropts.h>
DESCRIPTION
The stroptions structure, used in an M_SETOPTS or M_PCSETOPTS message, contains options for the stream head. The message is sent upstream by drivers and modules when they want to change stream head options for their stream.
STRUCTURE 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).
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.
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.
SEE ALSO
streamio(7) in the Programmer’s Guide: STREAMS
datab(D4DK), msgb(D4DK), messages(D5DK)
read(2) in the Programmer’s Reference Manual
DDI/DKI — STREAMS