Pseudo-TTY Streams

Drivers and modules can make the stream head act as a terminal stream by sending
an M_SETOPTS message with the SO_ISTTY flag
set upstream. This state may be changed by sending an M_SETOPTS message
with the SO_ISNTTY flag set upstream.

Controlling
terminals are allocated with the open(2) interface.
The device must tell the stream head that it is acting as a terminal.

The TOSTOP flag is set on reception of an M_SETOPTS message with the SO_TOSTOP flag set in the so_flags field. It is cleared on reception of an M_SETOPTS message
with the SO_TONSTOP flag set.

Stream head processing is isolated from modules and drivers by using several
message types, such as M_ERROR, M_HANGUP and M_SETOPS, which only affect the stream in which they are sent.