STREAMS-UX Programmer's Guide (February 2007)

Message Types
High Priority Messages
Appendix C
250
M_PCRSE
This is a priority message type reserved for internal use. Modules that do not recognize this message must
pass it on. Drivers that do not recognize it must free it.
M_PCSIG
This message is similar to the M_SIG message type, except for the priority. M_PCSIG is generally preferred over
M_SIG, as it is not subject to flow control.
M_READ
This message is generated by the stream head and sent downstream for a read() system call if no messages
are waiting to be read at the stream head, and read notification has been enabled. The read notification can
be enabled by the SO_MREADON flag, and disabled by the SO_MREADOFF flag of the M_SETOPTS message.
The message content is set to the number of bytes to be read in the read() call. This message notifies
modules and drivers of a read, and supports communication between streams that reside on separate
processors. The use of the M_READ message is developer dependent. Modules may either process this message
and pass it on, or free the message when they recognize it. If modules do not recognize an M_READ message,
they should pass it on. Drivers may or may not process it, and then free it. This message can not be generated
by user processes and should not be generated by a module or driver. It is discarded if passed to the stream
head.
M_START and M_STOP
This message requests devices to start or stop their output. They are intended to produce momentary pauses
in a device’s output, not to turn devices on or off. The message format and its use is developer dependent and
can be considered to be special cases of the M_CTL message. These messages cannot be generated by user
processes and are discarded if passed to the stream head.
M_STARTI and M_STOPI
These messages are similar to the M_START and M_STOP messages, except that M_STARTI and M_STOPI are
used to start and stop input.