STREAMS Programming Guide

Message Types

Several STREAMS messages differ in their purpose and queueing priority. The message types are briefly described and classified, according to their queueing priority, in Table 7-1. A detailed discussion of Message Types is in Chapter 8, Messages - Kernel Level.

Some message types are defined as high-priority types. The others can have a normal priority of 0, or a priority (also called a band) from 1 to 255.

Table 7-1 Ordinary Messages, Showing Direction of Communication Flow

Ordinary Messages (also called Normal Messages)

Direction 

M_BREAK

Request to a stream driver to send a "break"  

Upstream 

M_CTL

Control or status request used for intermodule communication  

Bidirectional 

M_DATA

User data message for I/O system calls  

Bidirectional 

M_DELAY

Request for a real-time delay on output  

Downstream 

M_IOCTL

Control/status request generated by a stream head  

Downstream 

M_PASSFP

File pointer-passing message  

Bidirectional 

M_PROTO

Protocol control information  

Bidirectional 

M_SETOPTS

Sets options at the stream head; sends upstream  

Upstream 

M_SIG

Signal sent from a module or driver  

Upstream 

Table 7-2 High-Priority Messages, Showing Direction of Communication Flow

High-Priority Messages:

Direction 

M_COPYIN

Copies in data for transparent ioctl(2)s

Upstream 

M_COPYOUT

Copies out data for transparent ioctl(2)s

Upstream 

M_ERROR

Reports downstream error condition  

Upstream 

M_FLUSH

Flushes module queue  

Bidirectional 

M_HANGUP

Sets a stream head hangup condition  

Upstream 

M_UNHANGUP

Reconnects line, sends upstream when hangup reverses  

Upstream 

M_IOCACK

Positiveioctl(2) acknowledgment

Upstream 

M_IOCDATA

Data for transparent ioctl(2)s, sent downstream

Downstream 

M_IOCNAK

Negative ioctl(2) acknowledgment

Upstream 

M_PCPROTO

Protocol control information  

Bidirectional 

M_PCSIG

Sends signal from a module or driver  

Upstream 

M_READ

Read notification; sends downstream  

Downstream 

M_START

Restarts stopped device output  

Downstream 

M_STARTI

Restarts stopped device input  

Downstream 

M_STOP

Suspends output  

Downstream 

M_STOPI

Suspends input  

Downstream