Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ldterm(7) — Dell System V Release 4 Issue 2.2

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

termios(2)

console(7)

ports(7)

termio(7)



ldterm(7)                        UNIX System V                        ldterm(7)


NAME
      ldterm - standard STREAMS terminal line discipline module

DESCRIPTION
      ldterm is a STREAMS module that provides most of the termio(7) terminal
      interface.  This module does not perform the low-level device control
      functions specified by flags in the ccflag word of the termio/termios
      structure or by the IGNBRK, IGNPAR, PARMRK, or INPCK flags in the ciflag
      word of the termio/termios structure; those functions must be performed
      by the driver or by modules pushed below the ldterm module.  All other
      termio/termios 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
      ciflag word and the delays specified in the coflag word.

      ldterm also handles EUC and multi-byte characters.

      The remainder of this section describes the processing of various STREAMS
      messages on the read- and write-side.

   Read-side Behavior
      Various types of STREAMS messages are processed as follows:

      MBREAK
           When this message is received, either an interrupt signal is
           generated or the message is treated as if it were an MDATA message
           containing a single ASCII NUL character, depending on the state of
           the BRKINT flag.

      MDATA
           This message is 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
           are passed upstream.

           If output is to be stopped or started as a result of the arrival of
           characters (usually CNTRL-Q and CNTRL-S), MSTOP and MSTART
           messages are sent downstream. If the IXOFF flag is set and input is
           to be stopped or started as a result of flow-control considerations,
           MSTOPI and MSTARTI messages are sent downstream.

           MDATA messages are sent downstream, as necessary, to perform
           echoing.

           If a signal is to be generated, an MFLUSH message with a flag byte
           of FLUSHR is placed on the read queue.  If the signal is also to
           flush output, an MFLUSH message with a flag byte of FLUSHW is sent
           downstream.




10/89                                                                    Page 1







ldterm(7)                        UNIX System V                        ldterm(7)


      MCTL
           If the size of the data buffer associated with the message is the
           size of struct iocblk, ldterm will perform functional negotiation to
           determine where the termio(7) processing is to be done. If the
           command field of the iocblk structure (ioccmd) is set to
           MCNOCANON, the input canonical processing normally performed on
           MDATA 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
           command is MCDOCANON, all input processing is enabled.  If the
           command is MCPARTCANON, then an MDATA message containing a
           termios structure is expected to be attached to the original MCTL
           message. The ldterm module will examine the iflag, oflag, and lflag
           fields of the termios structure and from then on will process only
           those flags which have not been turned ON.  If none of the above
           commands are found, the message is ignored; in any case, the message
           is passed upstream.

      MFLUSH
           The read queue of the module is flushed of all its data messages and
           all data in the record being accumulated are also flushed. The
           message is passed upstream.

      MIOCACK
           The data contained within the message, which is to be returned to
           the process, are 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:

      MFLUSH
           The write queue of the module is flushed of all its data messages
           and the message is passed downstream.

      MIOCTL
           The function of this ioctl is performed and the message is passed
           downstream in most cases. The TCFLSH and TCXONC ioctls can be
           performed entirely in the ldterm module, so the reply is sent
           upstream and the message is not passed downstream.

      MDATA
           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 MDELAY messages generated.
           Otherwise, the message is passed downstream without change.





Page 2                                                                    10/89







ldterm(7)                        UNIX System V                        ldterm(7)


      All other messages are passed downstream unchanged.

IOCTLS
      The following ioctls are processed by the ldterm module. All others are
      passed downstream.  EUCWSET and EUCWGET are ISTR ioctl calls whereas
      other ioctls listed here are TRANSPARENT ioctls.

      TCGETS/TCGETA
           The message is passed downstream; if an acknowledgment is seen, the
           data provided by the driver and modules downstream are 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, an MSETOPTS 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 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 MFLUSH 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 an
           MFLUSH 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 an MFLUSH 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 MSTOP
           message is sent downstream.  If the argument is 1 and output is
           stopped, an MSTART message is sent downstream.  If the argument is
           2 and input is not already stopped, an MSTOPI message is sent
           downstream.  If the argument is 3 and input is stopped, an MSTARTI
           message is sent downstream.

      TCSBRK
           The message is passed downstream, so the driver has a chance to
           drain the data and then send and an MIOCACK message upstream.

      EUCWSET
           This call takes a pointer to an eucioc structure, and uses it to set
           the EUC line discipline's local definition for the code set widths
           to be used for subsequent operations.  Within the stream, the line
           discipline may optionally notify other modules of this setting via
           MCTL messages.

      EUCWGET
           This call takes a pointer to an eucioc structure, and returns in it
           the EUC code set widths currently in use by the EUC line discipline.


10/89                                                                    Page 3







ldterm(7)                        UNIX System V                        ldterm(7)


SEE ALSO
      termios(2), console(7), ports(7), termio(7)

      Programmer's Guide: STREAMS


















































Page 4                                                                    10/89





Typewritten Software • bear@typewritten.org • Edmonds, WA 98026