MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


STREAMS Modules                                        ldterm(7M)



NAME
     ldterm - standard STREAMS terminal line discipline module

SYNOPSIS
     #include 


     #include 


     int ioctl(fd,IPUSH,"ldterm");


DESCRIPTION
     The ldterm STREAMS module provides most  of  the  termio(7I)
     terminal  interface.   The  vis  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.   The  ldterm  module  performs  all  other
     termio/termios  functions,  though  some  may  require   the
     cooperation of the driver or modules pushed below ldterm and
     may not be performed in some cases.  These include the IXOF
     flag  in  the  ciflag word and the delays  specified in the
     coflag word.


     The ldterm module also handles single and multi-byte charac-
     ters from various codesets including both Extended Unix Code
     (EUC) and non-EUC codesets.


     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     Depending on  the  state  of  the  BRKINT  flag,
                 either  an  interrupt signal is generated or the
                 message is treated as if it were an MDATA  mes-
                 sage  containing  a  single  ASCI NUL character
                 when this message is received.


     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



SunOS 5.11           Last change: 7 Jun1999                     1






STREAMS Modules                                        ldterm(7M)



                 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  mes-
                 sages  are sent downstream. If the IXOF 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  neces-
                 sary, to perform echoing.

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



     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 per-
                  formed and  the  processed  message  is  passed
                  downstream along with any MDELAY messages gen-
                  erated.  Otherwise, the message is passed down-
                  stream without change.


     MCTL        If the size of the data buffer associated  with
                  the  message  is  the  size  of  struct iocblk,
                  ldterm will perform functional  negotiation  to



SunOS 5.11           Last change: 7 Jun1999                     2






STREAMS Modules                                        ldterm(7M)



                  determine where the termio(7I) 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 mes-
                  sages 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 pro-
                  gram 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 struc-
                  ture is expected to be attached to the original
                  MCTL  message.  The ldterm module will examine
                  the iflag, oflag, and lflag fields of the  ter-
                  mios  structure  and  from  that point on, will
                  process only those flags  that  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  mes-
                  sage 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 downstream unchanged.

IOCTLS
     The  ldterm  module   processes  the  following  TRANSPARENT
     ioctls. 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 are  augmented  and  the  acknowledgement  is
         passed upstream.


     TCSETS/TCSETSW/TCSETSF/TCSETA/TCSETAW/TCSETAF

         The parameters that control the behavior of  the  ldterm



SunOS 5.11           Last change: 7 Jun1999                     3






STREAMS Modules                                        ldterm(7M)



         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. In any
         case,  ldterm passes the ioctl on downstream for  possi-
         ble additional processing.


     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 an MIOCACK mes-
         sage 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  using
         MCTL  messages.  When  this  call  is  received and the
         euciocstructure contains valid data, the line discipline
         changes  into  EUC  handling mode once the euciocdata is



SunOS 5.11           Last change: 7 Jun1999                     4






STREAMS Modules                                        ldterm(7M)



         completely transferred to an internal data structure.


     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. If the  current  codeset  of
         the  line  discipline  is  not an EUC one, the result is
         meaningless.


SEE ALSO
     termios(3C), console(7D), termio(7I)


     STREAMS Programming Guide






































SunOS 5.11           Last change: 7 Jun1999                     5



OpenSolaris man pages main menu

Contact us      |       About us      |       Term of use      |       Copyright © 2000-2010 MyWebUniversity.com ™