Manual page for LDTERM(4M)
ldterm - standard terminal STREAMS module
CONFIG
None; included by default.
SYNOPSIS
#include <sys/types.h>
#include <sys/stream.h>
#include <sys/stropts.h>
ioctl(fd, I_PUSH, "ldterm");
DESCRIPTION
ldterm
is a
STREAMS
module that provides most of the
termio.4
terminal interface. This module does not perform the low-level
device control functions specified by flags in the
c_cflag
word of the
termios
structure or by the
IGNBRK,
IGNPAR,
PARMRK,
or
INPCK
flags in the
c_iflag
word of the
termios
structure; those functions must be performed by the driver or by
modules pushed below the
ldterm
module.
All other
termio
functions are performed by
ldterm;
some of them, however, require the cooperation of the driver or
modules pushed below
ldterm,
and may not be performed in some cases. These include the
IXOFF
flag in the
c_iflag
word and the delays specified in the
c_oflag
word.
Read-side Behavior
Various types of
STREAMS
messages are processed as follows:
- M_BREAK
-
When this message is received, either an
interrupt signal is generated, or the message is treated as if it
were an
M_DATA
message containing a single
ASCII
NUL
character, depending on the state of the
BRKINT
flag.
- M_DATA
-
These messages are normally processed using the standard
termio
input processing. If the
ICANON
flag is set, a single input record (``line'') is accumulated in an
internal buffer, and sent upstream when a line-terminating character
is received. If the
ICANON
flag is not set, other input processing is performed and the
processed data is passed upstream.
If output is to be stopped or started as a result of the arrival of
characters,
M_STOP
and
M_START
messages are sent downstream, respectively. If the
IXOFF
flag is set, and input is to be
stopped or started as a result of flow-control considerations,
M_STOPI
and
M_STARTI
messages are sent downstream, respectively.
M_DATA
messages are sent downstream, as necessary, to perform echoing.
If a signal is to be generated, a
M_FLUSH
message with a flag byte of
FLUSHR
is placed on the read queue,
and if the signal is also to flush output a
M_FLUSH
message with a flag byte of
FLUSHW
is sent downstream.
- M_CTL
-
If the first byte of the message is
MC_NOCANON,
the input processing normally performed on
M_DATA
messages is disabled, and those messages are passed upstream
unmodified; this is for the use of modules or drivers that perform their own
input processing, such as a pseudo-terminal in
TIOCREMOTE
mode connected to a program that performs this processing. If the
first byte of the message is
MC_DOCANON,
the input processing is enabled.
Otherwise, the message is ignored; in any case, the message is passed
upstream.
- M_FLUSH
-
The read queue of the module is flushed of all its data messages,
and all data in the record
being accumulated is also flushed. The message is passed upstream.
- M_HANGUP
-
Data is flushed as it is for a
M_FLUSH
message, and
M_FLUSH
messages with a flag byte of
FLUSHRW
are sent upstream and downstream.
Then an
M_PCSIG
message is sent upstream with a signal of
SIGCONT,
followed by the
M_HANGUP
message.
- M_IOCACK
-
The data contained within the message, which is to be returned to the
process, is augmented if necessary, and the message
is passed upstream.
All other messages are passed upstream unchanged.
Write-side behavior
Various types of
STREAMS
messages are processed as follows:
- M_FLUSH
-
The write queue of the module is flushed of all its data messages,
and the message is passed downstream.
- M_IOCTL
-
The function to be performed for this
ioctl()
request by the
ldterm
module is performed, and the message is passed downstream in most
cases. The
TCFLSH
and
TCXONC
ioctl()
requests
can be performed entirely in this module, so the reply is sent
upstream and the message is not passed downstream.
- M_DATA
-
If the
OPOST
flag is set, or both the
XCASE
and
ICANON
flags are set, output processing is performed and the processed
message is passed downstream, along with any
M_DELAY
messages generated. Otherwise, the message is passed downstream
without change.
All other messages are passed downstream unchanged.
IOCTLS
The following
ioctl()
requests are processed by the
ldterm
module. All others are passed downstream.
- TCGETS
-
- TCGETA
-
The message is passed downstream; if an acknowledgment is seen, the
data provided by the driver and modules downstream is augmented and
the acknowledgement is passed upstream.
- TCSETS
-
- TCSETSW
-
- TCSETSF
-
- TCSETA
-
- TCSETAW
-
- TCSETAF
-
The parameters that control the behavior of the
ldterm
module are changed.
If a mode change requires options at the stream head to be changed, a
M_SETOPT
message is sent upstream. If the
ICANON
flag is turned on or off, the read mode at the stream head is changed
to message-nondiscard or byte-stream mode, respectively. If it is
turned on, the
vmin
and
vtime
values at the stream head are set to 1 and 0, respectively; if it is
turned on, they are set to the values specified by the
ioctl()
request.
The
vmin
and
vtime
values are also set if
ICANON
is off and the values are changed by the
ioctl()
request.
If the
TOSTOP
flag is turned on or off, the
tostop
mode at the stream head is turned on or off, respectively.
- TCFLSH
-
If the argument is 0, an
M_FLUSH
message with a flag byte of
FLUSHR
is sent downstream and placed on the read queue.
If the argument is 1, the write queue is flushed of all its data
messages and a
M_FLUSH
message with a flag byte of
FLUSHW
is sent upstream and downstream.
If the argument is 2, the write queue is flushed of all its data
messages and a
M_FLUSH
message with a flag byte of
FLUSHRW
is sent downstream and placed on the read queue.
- TCXONC
-
If the argument is 0, and output is not already stopped, an
M_STOP
message is sent downstream.
If the argument is 1, and output is stopped, an
M_START
message is sent downstream.
If the argument is 2, and input is not already stopped, an
M_STOPI
message is sent downstream.
If the argument is 3, and input is stopped, an
M_STARTI
message is sent downstream.
SEE ALSO
console.4s
mcp.4s
mti.4s
pty.4
termio.4
ttcompat.4m
zs.4s
Created by unroff & hp-tools.
© somebody (See intro for details). All Rights Reserved.
Last modified 11/5/97