ttcompat man page on Solaris

Man page or keyword search:  
man Server   20652 pages
apropos Keyword Search (all sections)
Output format
Solaris logo
[printable version]

ttcompat(7M)			STREAMS Modules			  ttcompat(7M)

NAME
       ttcompat - V7, 4BSD and XENIX STREAMS compatibility module

SYNOPSIS
       #define BSD_COMP
       #include <sys/stropts.h>
       #include <sys/ioctl.h>
       ioctl(fd, I_PUSH, "ttcompat");

DESCRIPTION
       ttcompat	 is a STREAMS module that translates the ioctl calls supported
       by the older Version 7, 4BSD, and XENIX terminal drivers into the ioctl
       calls  supported	 by  the  termio interface (see termio(7I)). All other
       messages pass through this module unchanged; the behavior of  read  and
       write  calls is unchanged, as is the behavior of ioctl calls other than
       the ones supported by ttcompat.

       This module can be automatically pushed onto a stream using  the	 auto‐
       push   mechanism	 when a terminal device is opened; it does not have to
       be explicitly  pushed onto a stream.  This  module  requires  that  the
       termios	interface  be supported by the modules and the application can
       push the driver downstream. The TCGETS, TCSETS, and TCSETSF ioctl calls
       must  be	 supported.  If	 any information set or fetched by those ioctl
       calls is not supported by the modules and driver	 downstream,  some  of
       the  V7/4BSD/XENIX  functions may not be supported. For example, if the
       CBAUD bits in the  c_cflag field are not supported, the functions  pro‐
       vided  by  the  sg_ispeed  and sg_ospeed fields of the sgttyb structure
       (see below) will not be supported. If the  TCFLSH  ioctl	 is  not  sup‐
       ported,	the  function provided by the TIOCFLUSH ioctl will not be sup‐
       ported. If the TCXONC ioctl is not supported, the functions provided by
       the  TIOCSTOP  and  TIOCSTART ioctl calls will not be supported. If the
       TIOCMBIS and TIOCMBIC ioctl calls are not supported, the functions pro‐
       vided by the TIOCSDTR and TIOCCDTR ioctl calls will not be supported.

       The basic ioctl calls use the sgttyb structure defined by <sys/ttold.h>
       (included by <sys/ioctl.h>):

	 struct	  sgttyb   {
	      char sg_ispeed;
	      char sg_ospeed;
	      char sg_erase;
	      char sg_kill;
	      int  sg_flags;
	 };

       The sg_ispeed and sg_ospeed  fields  describe  the   input  and	output
       speeds  of the device.  If the speed set on the device is  over B38400,
       then it is reported as B38400 for compatibility reasons. If it  is  set
       to B38400 and  the current speed is over B38400, the change is ignored.
       See TIOCGETP and TIOCSETP below. The sg_erase and sg_kill fields of the
       argument	 structure specify the erase and kill characters respectively,
       and reflect the values in the VERASE and	 VKILL	members	 of  the  c_cc
       field of the termios structure.

       The  sg_flags  field  of	 the argument structure contains several flags
       that determine the system's treatment of the terminal. They are	mapped
       into  flags in fields of the terminal state, represented by the termios
       structure.

       Delay type 0 (NL0,  TAB0, CR0, FF0,  BS0) is  always  mapped  into  the
       equivalent  delay type 0 in the c_oflag field of the termios structure.
       Other delay  mappings are  performed as follows:

       ┌─────────┬─────────────────────────────────────────────────────────┐
       │sg_flags │			   c_oflag			   │
       ├─────────┼─────────────────────────────────────────────────────────┤
       │BS1	 │ BS1							   │
       ├─────────┼─────────────────────────────────────────────────────────┤
       │FF1	 │ VT1							   │
       ├─────────┼─────────────────────────────────────────────────────────┤
       │CR1	 │ CR2							   │
       ├─────────┼─────────────────────────────────────────────────────────┤
       │CR2	 │ CR3							   │
       ├─────────┼─────────────────────────────────────────────────────────┤
       │CR3	 │ CR0 (not supported)					   │
       ├─────────┼─────────────────────────────────────────────────────────┤
       │TAB1	 │ TAB1							   │
       ├─────────┼─────────────────────────────────────────────────────────┤
       │TAB2	 │ TAB2							   │
       ├─────────┼─────────────────────────────────────────────────────────┤
       │XTABS	 │ TAB3							   │
       ├─────────┼─────────────────────────────────────────────────────────┤
       │NL1	 │ ONLRET|CR1						   │
       ├─────────┼─────────────────────────────────────────────────────────┤
       │NL2	 │ NL1							   │
       ├─────────┼─────────────────────────────────────────────────────────┤
       │NL3	 │ NL0 (not supported)					   │
       └─────────┴─────────────────────────────────────────────────────────┘

       If previous TIOCLSET or TIOCLBIS ioctl calls have not  selected	LITOUT
       or  PASS8 mode, and if RAW mode is not selected, the ISTRIP flag is set
       in the c_iflag field of the termios structure, and the EVENP  and  ODDP
       flags  control  the  parity  of	characters  sent  to  the terminal and
       accepted from the terminal, as follows:

       0 (neither EVENP nor ODDP)    Parity is not to be generated  on	output
				     or	 checked on input. The	character size
				     is set to CS8  and	 the  PARENB  flag  is
				     cleared  in  the  c_cflag	field  of  the
				     termios structure.

       EVENP			     Even parity characters are to  be	gener‐
				     ated on output and accepted on input. The
				     INPCK  flag is set in the	c_iflag	 field
				     of	 the  termios structure, the character
				     size is set to CS7 and the PARENB flag is
				     set  in  the c_iflag field of the termios
				     structure.

       ODDP			     Odd parity characters are to be generated
				     on	 output	 and  accepted	on  input. The
				     INPCK flag is set	in  the	 c_iflag,  the
				     character	size  is  set  to  CS7 and the
				     PARENB and PARODD flags are  set  in  the
				     c_iflag field  of the termios structure.

       EVENP|ODDP or ANYP	     Even  parity  characters are to be gener‐
				     ated  on output and characters of	either
				     parity  are to be	accepted on input. The
				     INPCK flag	 is  cleared  in  the  c_iflag
				     field,  the  character size is set to CS7
				     and the PARENB flag is set in the c_iflag
				     field of the termios structure.

       The  RAW	 flag  disables	 all  output processing (the OPOST flag in the
       c_oflag field, and the XCASE and IEXTEN flags in the c_iflag field  are
       cleared	in  the termios structure) and input processing (all flags  in
       the c_iflag field other than the IXOFF and IXANY flags  are cleared  in
       the  termios  structure).   Eight  bits of data, with no parity bit are
       accepted on input and generated on output; the character size is set to
       CS8 and the PARENB and PARODD flags are cleared in the c_cflag field of
       the termios structure. The signal-generating and	 line-editing  control
       characters  are	disabled  by clearing the ISIG and ICANON flags in the
       c_iflag field of the termios structure.

       The CRMOD flag turns input carriage  return  characters	into  linefeed
       characters,  and	 output	 linefeed  characters to be sent as a carriage
       return followed by a linefeed. The ICRNL flag in the c_iflag field, and
       the  OPOST and ONLCR flags in the c_oflag field, are set in the termios
       structure.

       The LCASE flag maps upper-case letters in the ASCII  character  set  to
       their  lower-case  equivalents  on  input (the IUCLC flag is set in the
       c_iflag field), and maps lower-case letters in the ASCII character  set
       to their upper-case equivalents on output (the OLCUC flag is set in the
       c_oflag field). Escape sequences are accepted on input,	and  generated
       on  output,  to	handle certain ASCII characters not supported by older
       terminals (the XCASE flag is set in the c_lflag field).

       Other flags are directly mapped to flags in the termios structure:

       ┌─────────┬─────────────────────────────────────────────────────────┐
       │sg_flags │		 Flags in termios structure		   │
       ├─────────┼─────────────────────────────────────────────────────────┤
       │CBREAK	 │ Complement of ICANON in c_lflag field		   │
       ├─────────┼─────────────────────────────────────────────────────────┤
       │ECHO	 │ ECHO in c_lflag field				   │
       ├─────────┼─────────────────────────────────────────────────────────┤
       │TANDEM	 │ IXOFF in c_iflag field				   │
       └─────────┴─────────────────────────────────────────────────────────┘

       Another structure associated with each  terminal	 specifies  characters
       that  are special in both the old Version 7 and the newer 4BSD terminal
       interfaces. The following structure is defined by <sys/ttold.h>:

	 struct	  tchars   {
		   char t_intrc;     /* interrupt */
		   char t_quitc;     /* quit */
		   char t_startc; /* start output */
		   char t_stopc;     /* stop output */
		   char t_eofc;	       /* end-of-file */
		   char t_brkc;	       /* input delimiter (like nl) */
	      };

       XENIX defines the  tchar structure as  tc. The characters are mapped to
       members of the c_cc field of the termios structure as follows:

		tchars		      c_cc index
		t_intrc		      VINTR
		t_quitc		      VQUIT
		t_startc	      VSTART
		t_stopc		      VSTOP
		t_eofc		      VEOF
		t_brkc		      VEOL

       Also  associated	 with each terminal is a local flag word (TIOCLSET and
       TIOCLGET), specifying flags  supported by the new 4BSD terminal	inter‐
       face.  Most  of these flags are directly mapped to flags in the termios
       structure:

       ┌────────────┬─────────────────────────────────────────────────────────┐
       │Local flags │		    Flags in termios structure		      │
       ├────────────┼─────────────────────────────────────────────────────────┤
       │LCRTBS	    │ Not supported					      │
       ├────────────┼─────────────────────────────────────────────────────────┤
       │LPRTERA	    │ ECHOPRT in the c_lflag field			      │
       ├────────────┼─────────────────────────────────────────────────────────┤
       │LCRTERA	    │ ECHOE in the c_lflag field			      │
       ├────────────┼─────────────────────────────────────────────────────────┤
       │LTILDE	    │ Not supported					      │
       ├────────────┼─────────────────────────────────────────────────────────┤
       │LMDMBUF	    │ Not supported					      │
       ├────────────┼─────────────────────────────────────────────────────────┤
       │LTOSTOP	    │ TOSTOP in the c_lflag field			      │
       ├────────────┼─────────────────────────────────────────────────────────┤
       │LFLUSHO	    │ FLUSHO in the c_lflag field			      │
       ├────────────┼─────────────────────────────────────────────────────────┤
       │LNOHANG	    │ CLOCAL in the c_cflag field			      │
       ├────────────┼─────────────────────────────────────────────────────────┤
       │LCRTKIL	    │ ECHOKE in the c_lflag field			      │
       ├────────────┼─────────────────────────────────────────────────────────┤
       │LPASS8	    │ CS8 in the c_cflag field				      │
       ├────────────┼─────────────────────────────────────────────────────────┤
       │LCTLECH	    │ CTLECH in the c_lflag field			      │
       ├────────────┼─────────────────────────────────────────────────────────┤
       │LPENDIN	    │ PENDIN in the c_lflag field			      │
       ├────────────┼─────────────────────────────────────────────────────────┤
       │LDECCTQ	    │ Complement of IXANY in the c_iflag field		      │
       ├────────────┼─────────────────────────────────────────────────────────┤
       │LNOFLSH	    │ NOFLSH in the c_lflag field			      │
       └────────────┴─────────────────────────────────────────────────────────┘

       Each flag has a corresponding equivalent sg_flags value.	 The  sg_flags
       definitions omit the leading L; for example, TIOCSETP with sg_flags set
       to TOSTOP is equivalent to TIOCLSET with LTOSTOP.

       Another structure associated with each terminal is the  ltchars	struc‐
       ture  which defines control characters for the new 4BSD terminal inter‐
       face. Its structure is:

	 struct ltchars {
	    char t_suspc;  /* stop process signal */
	    char t_dsuspc; /* delayed stop process signal */
	    char t_rprntc; /* reprint line */
	    char t_flushc; /*flush output (toggles) */
	    char t_werasc; /* word erase */
	    char t_lnextc; /* literal next character */
	 };

       The characters are mapped to members of the c_cc field of  the  termios
       structure as follows:

       ┌─────────┬─────────────────────────────────────────────────────────┐
       │ltchars	 │			 c_cc index			   │
       ├─────────┼─────────────────────────────────────────────────────────┤
       │t_suspc	 │ VSUS							   │
       ├─────────┼─────────────────────────────────────────────────────────┤
       │t_dsuspc │ VDSUSP						   │
       ├─────────┼─────────────────────────────────────────────────────────┤
       │t_rprntc │ VREPRINT						   │
       ├─────────┼─────────────────────────────────────────────────────────┤
       │t_flushc │ VDISCARD						   │
       ├─────────┼─────────────────────────────────────────────────────────┤
       │t_werasc │ VWERASE						   │
       ├─────────┼─────────────────────────────────────────────────────────┤
       │t_lnextc │ VLNEXT						   │
       └─────────┴─────────────────────────────────────────────────────────┘

IOCTLS
       ttcompat	 responds  to the following ioctl calls. All others are passed
       to the module below.

       TIOCGETP	    The argument is a pointer to an sgttyb structure. The cur‐
		    rent   terminal state is fetched; the  appropriate charac‐
		    ters in  the terminal  state are stored   in  that	struc‐
		    ture,  as are the input and output speeds. If the speed is
		    over B38400,  then B38400 is  returned. The values of  the
		    flags  in the sg_flags field are derived from the flags in
		    the terminal state and stored in the structure.

       TIOCEXCL	    Set exclusive-use mode; no further	opens  are   permitted
		    until the file has been closed.

       TIOCNXCL	    Turn off exclusive-use mode.

       TIOCSETP	    The	 argument  is  a  pointer  to an sgttyb structure. The
		    appropriate characters and input and output speeds in  the
		    terminal  state are set from the values in that structure,
		    and the flags in the terminal state are set to  match  the
		    values  of	the flags in the sg_flags field of that struc‐
		    ture. The state is changed with a TCSETSF  ioctl  so  that
		    the	 interface  delays  until  output  is  quiescent, then
		    throws away any unread  characters,	 before	 changing  the
		    modes.  If	the  current  device  speed is over B38400 for
		    either input or output  speed,  and	 B38400	 is  specified
		    through  this  interface for that speed, the actual device
		    speed is not changed. If the device	 speed	is  B38400  or
		    lower  or  if  some	 speed other than B38400 is specified,
		    then the actual speed specified is set.

       TIOCSETN	    The argument is a pointer to an sgttyb structure. The ter‐
		    minal state is changed as  TIOCSETP would change it, but a
		    TCSETS ioctl is used, so that the interface neither delays
		    nor discards input.

       TIOCHPCL	    The	 argument  is  ignored.	 The  HUPCL flag is set in the
		    c_cflag word of the terminal state.

       TIOCFLUSH    The argument is a pointer to an int variable. If its value
		    is	zero, all characters waiting in input or output queues
		    are flushed. Otherwise, the value of the int is treated as
		    the	 logical  OR  of the FREAD and FWRITE flags defined by
		    <sys/file.h>. If the FREAD	bit  is	 set,  all  characters
		    waiting in input queues are flushed, and if the FWRITE bit
		    is set,  all  characters  waiting  in  output  queues  are
		    flushed.

       TIOCSBRK	    The	 argument  is  ignored.	 The  break bit is set for the
		    device. (This  is not supported  by ttcompat. The underly‐
		    ing driver must support TIOCSBRK.)

       TIOCCBRK	    The	 argument is ignored. The break bit is cleared for the
		    device. (This is not supported by ttcompat. The underlying
		    driver must support TIOCCBRK.)

       TIOCSDTR	    The	 argument  is  ignored. The Data Terminal Ready bit is
		    set for the device.

       TIOCCDTR	    The argument is ignored. The Data Terminal	Ready  bit  is
		    cleared for the device.

       TIOCSTOP	    The	 argument is ignored. Output is stopped as if the STOP
		    character had been typed.

       TIOCSTART    The argument is ignored. Output is	restarted  as  if  the
		    START character had been typed.

       TIOCGETC	    The	 argument is a pointer to a tchars structure. The cur‐
		    rent terminal state is fetched, and the appropriate	 char‐
		    acters in the terminal state are stored in that structure.

       TIOCSETC	    The	 argument is a pointer to a tchars structure. The val‐
		    ues of the appropriate characters in  the  terminal	 state
		    are set from the characters in that structure.

       TIOCLGET	    The	 argument is a pointer to an int. The current terminal
		    state is fetched, and the values of the  local  flags  are
		    derived from the flags in the terminal state and stored in
		    the int pointed to by the argument.

       TIOCLBIS	    The argument is a pointer to an int whose value is a  mask
		    containing	flags  to  be set in the local flags word. The
		    current terminal state is fetched, and the values  of  the
		    local  flags  are  derived	from the flags in the terminal
		    state; the specified flags are set, and the flags  in  the
		    terminal state are set to match the new value of the local
		    flags word.

       TIOCLBIC	    The argument is a pointer to an int whose value is a  mask
		    containing	flags  to  be cleared in the local flags word.
		    The current terminal state is fetched, and the  values  of
		    the local flags are derived from the flags in the terminal
		    state; the specified flags are cleared, and the  flags  in
		    the	 terminal  state are set to match the new value of the
		    local flags word.

       TIOCLSET	    The argument is a pointer to an int containing a  new  set
		    of local flags. The flags in the terminal state are set to
		    match the  new value of the local flags word.  (This ioctl
		    was	 added	because sg_flags was once a 16	bit value. The
		    local modes controlled by TIOCLSET are equivalent  to  the
		    modes controlled by TIOCSETP and sg_flags.)

       TIOCGLTC	    The	 argument  is  a  pointer to an ltchars structure. The
		    values of the appropriate characters in the terminal state
		    are stored in that structure.

       TIOCSLTC	    The	 argument  is  a  pointer to an ltchars structure. The
		    values of the appropriate characters in the terminal state
		    are set from the characters in that structure.

       FIORDCHK	    Returns the number of immediately readable characters. The
		    argument is ignored. (This ioctl is	 handled in the stream
		    head, not in the ttcompat module.)

       FIONREAD	    Returns  the  number of immediately readable characters in
		    the int pointed to by the argument. (This ioctl  is	  han‐
		    dled in the stream head, not in the ttcompat module.)

       The following ioctls are returned as successful for the sake of compat‐
       ibility. However, nothing significant is done (that is,	the  state  of
       the  terminal  is  not  changed	in  any	 way, and no message is passed
       through to the underlying tty driver).

	 DIOCSETP
	 DIOCSETP
	 DIOCGETP
	 LDCLOSE
	 LDCHG
	 LDOPEN
	 LDGETT
	 LDSETT
	 TIOCGETD
	 TIOCSETD

       The following old ioctls are not supported by ttcompat,	but  are  sup‐
       ported  by  Solaris tty drivers. As with all ioctl not otherwise listed
       in this documentation, these  are  passed  through  to  the  underlying
       driver and are handled there.

	 TIOCREMOTE
	 TIOCGWINSZ
	 TIOCSWINSZ

       The  following ioctls are  not supported by ttcompat, and are generally
       not supported by Solaris tty drivers. They are  passed through, and the
       tty drivers return EINVAL.

	 LDSMAP
	 LDGMAP
	 LDNMAP
	 TIOCNOTTY
	 TIOCOUTQ

       LDSMAP,	 LDGMAP,  and	LDNMAP	 are  defined	in <sys/termios.h>.

       Support	for TIOCNOTTY and TIOCSCTTY is provided natively by the stream
       head. Therefore, those ioctls never  reach  ttcompat  or	 any  STREAMS-
       based tty drivers.

SEE ALSO
       ioctl(2), termios(3C), ldterm(7M), termio(7I)

SunOS 5.10			  13 Apr 2010			  ttcompat(7M)
[top]

List of man pages available for Solaris

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net