Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ldterm(7) — NEWS-os 5.0.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

termios(2)

console(7)

ports(7)

termio(7)



ldterm(7)              DEVICES AND MODULES              ldterm(7)



NAME
     ldterm - standard STREAMS terminal line discipline module

DESCRIPTION
     ldterm is a STREAMS module that provides most  of  the  ter-
     mio(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 per-
     formed  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 sig-
          nal  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



                                                                1





ldterm(7)              DEVICES AND MODULES              ldterm(7)



          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.

     MCTL
          If the size of the data buffer associated with the mes-
          sage  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.




                                                                2





ldterm(7)              DEVICES AND MODULES              ldterm(7)



     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.

     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 TRAN-
     PARENT 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  down-
          stream.   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



                                                                3





ldterm(7)              DEVICES AND MODULES              ldterm(7)



          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 defini-
          tion 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.

SEE ALSO
     termios(2), console(7), ports(7), termio(7).
     Programmer's Guide: STREAMS.



































                                                                4



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