ttcompat man page on SmartOS

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

TTCOMPAT(7M)							  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 provided  by
       the  sg_ispeed and sg_ospeed fields of the sgttyb structure (see below)
       will not be supported. If the TCFLSH ioctl is not supported, the	 func‐
       tion  provided  by  the	TIOCFLUSH ioctl will not be supported.	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 provided  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
		     current   terminal	 state	is  fetched;  the  appropriate
		     characters in  the terminal  state are  stored   in  that
		     structure,	 as  are  the  input and output speeds. If the
		     speed is over B38400,  then B38400 is  returned. The val‐
		     ues  of  the flags in the sg_flags field are derived from
		     the flags in the terminal state and stored in the	struc‐
		     ture.

       TIOCEXCL
		     Set ``exclusive-use'' mode; no further opens are  permit‐
		     ted 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
		     terminal 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 under‐
		     lying driver must support TIOCSBRK.)

       TIOCCBRK
		     The argument is ignored. The break bit is cleared for the
		     device.  (This is not supported by ttcompat. The underly‐
		     ing 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	struc‐
		     ture.

       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 termi‐
		     nal 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 equiva‐
		     lent 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

       (Note:	  LDSMAP,     LDGMAP,	 and	 LDNMAP	   are	 defined    in
       <sys/termios.h>.)

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

				  Oct 2, 2001			  TTCOMPAT(7M)
[top]

List of man pages available for SmartOS

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