Annotation of cci/usr/src/man/man4/tty.4, revision 1.1.1.1

1.1       root        1: .de Ul
                      2: .ie t \\$1\l'|0\(ul'
                      3: .el \fI\\$1\fP
                      4: ..
                      5: .TH TTY 4
                      6: .UC 4
                      7: .SH NAME
                      8: tty \- general terminal interface
                      9: .SH DESCRIPTION
                     10: This section describes
                     11: both a particular special file
                     12: .B /dev/tty
                     13: and the terminal drivers used for conversational computing.
                     14: .LP
                     15: .B Line disciplines.
                     16: .PP
                     17: The system provides different
                     18: .I "line disciplines"
                     19: for controlling communications lines.
                     20: In this version of the system there are three disciplines available:
                     21: .IP "old" 8
                     22: The old (standard) terminal driver.  This is used when using the
                     23: standard shell
                     24: .IR sh (1)
                     25: and for compatibility with other standard version 7 UNIX systems.
                     26: .IP "new"
                     27: A newer terminal driver, with features for job control; this must
                     28: be used when using
                     29: .IR csh (1).
                     30: See
                     31: .IR newtty (1)
                     32: for a short user-level summary.
                     33: .IP "net"
                     34: A line discipline used for networking and loading data into
                     35: the system over communications lines.  It allows high speed input
                     36: at very low overhead, and is described in
                     37: .IR bk (4).
                     38: .LP
                     39: Line discipline switching is accomplished with the TIOCSETD 
                     40: .I ioctl:
                     41: .IP
                     42: .B "int ldisc = LDISC; ioctl(filedes, TIOCSETD, &ldisc);"
                     43: .LP
                     44: where LDISC is OTTYDISC for the standard tty driver, NTTYDISC for the new
                     45: driver and NETLDISC for the networking discipline.
                     46: The standard (currently old) tty driver is discipline 0 by convention.
                     47: The current line discipline can be obtained with the TIOCGETD ioctl.
                     48: Pending input is discarded when the line discipline is changed.
                     49: .PP
                     50: All of the low-speed asynchronous
                     51: communications ports can use any
                     52: of the available line disciplines, no matter what
                     53: hardware is involved.
                     54: The remainder of this section discusses the
                     55: \*(lqold\*(rq and \*(lqnew\*(rq disciplines.
                     56: .LP
                     57: .B "The control terminal."
                     58: .LP
                     59: When a terminal file is opened, it causes the process to wait until a
                     60: connection is established.  In practice, user programs seldom open
                     61: these files; they are opened by
                     62: .IR init (8)
                     63: and become a user's standard input and output file.
                     64: .PP
                     65: If a process which has no control terminal opens a terminal file, then
                     66: that terminal file becomes the control terminal for that process.
                     67: The control terminal is thereafter inherited by a child process during a
                     68: .IR fork (2),
                     69: even if the control terminal is closed.
                     70: .LP
                     71: The file
                     72: .B /dev/tty
                     73: is, in each process, a synonym for a
                     74: .I "control terminal"
                     75: associated with that process.  It is useful for programs that wish to
                     76: be sure of writing messages on the terminal
                     77: no matter how output has been redirected.
                     78: It can also be used for programs that demand a file name
                     79: for output, when typed output is desired
                     80: and it is tiresome to find out which terminal
                     81: is currently in use.
                     82: .LP
                     83: .B "Process groups."
                     84: .LP
                     85: As described more completely in
                     86: .IR jobs (3),
                     87: command processors such as
                     88: .IR csh (1)
                     89: can arbitrate the terminal between different
                     90: .I jobs
                     91: by placing related jobs in a single process group and associating this
                     92: process group with the terminal.  A terminals associated process group
                     93: may be set using the TIOCSPGRP
                     94: .IR ioctl (2):
                     95: .IP
                     96: \fBioctl(fildes, TIOCSPGRP, &pgrp)\fR
                     97: .LP
                     98: or examined using TIOCGPGRP rather than TIOCSPGRP, returning the current
                     99: process group in
                    100: .I pgrp.
                    101: The new terminal driver aids in this arbitration by restricting access
                    102: to the terminal by processes which are not in the current process group;
                    103: see
                    104: .B "Job access control"
                    105: below.
                    106: .LP
                    107: .B "Modes."
                    108: .PP
                    109: The terminal drivers have three major modes, characterized by the
                    110: amount of processing on the input and output characters:
                    111: .IP cooked 10
                    112: The normal mode.  In this mode lines of input are collected and input editing
                    113: is done.  The edited line is made available when it is completed by
                    114: a newline
                    115: or when an EOT (control-D, hereafter ^D)
                    116: is entered.
                    117: A carriage return is usually made synonymous with newline in this mode,
                    118: and replaced with a newline whenever it is typed.
                    119: All driver functions
                    120: (input editing, interrupt generation,
                    121: output processing such as delay generation and tab expansion, etc.)
                    122: are available in this mode.
                    123: .IP CBREAK 10
                    124: This mode eliminates the character, word, and line editing input facilities,
                    125: making the input character available to the user program as it is typed.
                    126: Flow control, literal-next and interrupt processing are still done in this mode.
                    127: Output processing is done.
                    128: .IP RAW 10
                    129: This mode eliminates all input processing and makes all input characters
                    130: available as they are typed; no output processing is done either.
                    131: .PP
                    132: The style of input processing can also be very different when,
                    133: in the new terminal driver, a process asks for notification
                    134: via a SIGTTIN
                    135: .IR signal (2)
                    136: when input is ready to be read from the control terminal.  In this case a
                    137: .IR read (2)
                    138: from the control terminal will never block, but rather
                    139: return an error indication (EIO) if there is no input available.
                    140: .LP
                    141: .B "Input editing."
                    142: .LP
                    143: A UNIX terminal ordinarily operates in full-duplex mode.
                    144: Characters may be typed at any time,
                    145: even while output is occurring, and are only lost when the
                    146: system's character input buffers become completely
                    147: choked, which is rare,
                    148: or when the user has accumulated the maximum allowed number of
                    149: input characters that have not yet been read by some program.
                    150: Currently this limit is 256 characters.
                    151: In the old terminal driver all the saved characters are thrown away
                    152: when the limit is reached, without notice; the new driver simply refuses
                    153: to accept any further input, and rings the terminal bell.
                    154: .PP
                    155: Input characters are normally accepted in either even or odd parity
                    156: with the parity bit being stripped off before the character is given to
                    157: the program.  By clearing either the EVEN or ODD bit in the flags word
                    158: it is possible to have input characters with that parity discarded (see the
                    159: \fBSummary\fR below.)
                    160: .PP
                    161: In all of the line disciplines, it is possible to simulate terminal
                    162: input using the TIOCSTI ioctl, which takes, as its third argument,
                    163: the address of a character.  The system pretends that this character
                    164: was typed on the argument terminal, which must be the control terminal except
                    165: for the super-user (this call is not in standard version 7 UNIX)..
                    166: .PP
                    167: Input characters are normally echoed by putting them in an output queue
                    168: as they arrive.  This may be disabled by clearing the ECHO bit in the
                    169: flags word using the
                    170: .IR stty (2)
                    171: call or the TIOCSETN or TIOCSETP ioctls
                    172: (see the \fBSummary\fR below).
                    173: .PP
                    174: In cooked mode, terminal input is processed in units of lines.
                    175: A program attempting
                    176: to read will normally be suspended until an entire line has been
                    177: received
                    178: (but see the description of SIGTTIN in \fBModes\fR above and FIONREAD in
                    179: \fBSummary\fR below.)
                    180: No matter how many characters are requested
                    181: in the read call, at most one line will be returned.
                    182: It is not, however, necessary to read a whole line at
                    183: once; any number of characters may be
                    184: requested in a read, even one, without losing information.
                    185: .PP
                    186: During input, line editing is normally done, with the character `#'
                    187: logically erasing the last character typed and the character `@'
                    188: logically erasing the entire current input line.
                    189: These are often reset on crt's,
                    190: with ^H replacing #,
                    191: and ^U replacing @.
                    192: These characters
                    193: never erase beyond the beginning of the current input line or an ^D.
                    194: These characters may be entered literally by
                    195: preceding them with `\e\|'; in the old teletype driver both the `\e\|' and
                    196: the character entered literally will appear on the screen; in the new
                    197: driver the `\e\|' will normally disappear.
                    198: .PP
                    199: The drivers normally treat either a carriage return or a newline character
                    200: as terminating an input line, replacing the return with a newline and echoing
                    201: a return and a line feed.
                    202: If the CRMOD bit is cleared in the local mode word then the processing
                    203: for carriage return is disabled, and it is simply echoed as a return,
                    204: and does not terminate cooked mode input.
                    205: .PP
                    206: In the new driver there is a literal-next character ^V which can be typed
                    207: in both cooked and CBREAK mode preceding
                    208: .B any
                    209: character to prevent its special meaning.  This is to be preferred to the
                    210: use of `\e\|' escaping erase and kill characters, but `\e\|' is (at least
                    211: temporarily) retained with its old function in the new driver for historical
                    212: reasons.
                    213: .PP
                    214: The new terminal driver also provides two other editing characters in
                    215: normal mode.  The word-erase character, normally ^W, erases the preceding
                    216: word, but not any spaces before it.  For the purposes of ^W, a word
                    217: is defined as a sequence of non-blank characters, with tabs counted as
                    218: blanks.
                    219: Finally, the reprint character, normally ^R, retypes the pending input beginning
                    220: on a new line.  Retyping occurs automagically in cooked mode if characters
                    221: which would normally be erased from the screen are fouled by program output.
                    222: .LP
                    223: .B "Input echoing and redisplay"
                    224: .LP
                    225: In the old terminal driver, nothing special occurs when an erase character
                    226: is typed; the erase character is simply echoed.  When a kill character
                    227: is typed it is echoed followed by a new-line (even if the character is
                    228: not killing the line, because it was preceded by a `\e\|'!.)
                    229: .PP
                    230: The new terminal driver has several modes for handling the echoing of
                    231: terminal input, controlled by bits in a local mode word.
                    232: .LP
                    233: .I "Hardcopy terminals."
                    234: When a hardcopy terminal is in use, the LPRTERA bit is normally set in
                    235: the local mode word.  Characters which are logically erased are
                    236: then printed out backwards preceded by `\e\|' and followed by `/' in this mode.
                    237: .LP
                    238: .I "Crt terminals."
                    239: When a crt terminal is in use, the LCRTBS bit is normally set in the local
                    240: mode word.  The terminal driver then echoes the proper number of erase
                    241: characters when input is erased; in the normal case where the erase
                    242: character is a ^H this causes the cursor of the terminal to back up
                    243: to where it was before the logically erased character was typed.
                    244: If the input has become fouled due to interspersed asynchronous output,
                    245: the input is automagically retyped.
                    246: .LP
                    247: .I "Erasing characters from a crt."
                    248: When a crt terminal is in use, the LCRTERA bit may be set to cause
                    249: input to be erased from the screen with a \*(lqbackspace-space-backspace\*(rq
                    250: sequence when character or word deleting sequences are used.
                    251: A LCRTKIL bit may be set as well, causing the input to
                    252: be erased in this manner on line kill sequences as well.
                    253: .LP
                    254: .I "Echoing of control characters."
                    255: If the LCTLECH bit is set in the local state word, then non-printing (control)
                    256: characters are normally echoed as ^X (for some X)
                    257: rather than being echoed unmodified; delete is echoed as ^?.
                    258: .LP
                    259: The normal modes for using the new terminal driver on crt terminals
                    260: are speed dependent.
                    261: At speeds less than 1200 baud, the LCRTERA and LCRTKILL processing
                    262: is painfully slow, so 
                    263: .IR stty (1)
                    264: normally just sets LCRTBS and LCTLECH; at
                    265: speeds of 1200 baud or greater all of these bits are normally set.
                    266: .IR Stty (1)
                    267: summarizes these option settings and the use of the new terminal
                    268: driver as
                    269: \*(lqnewcrt.\*(rq
                    270: .LP
                    271: .B "Output processing."
                    272: .PP
                    273: When one or more
                    274: characters are written, they are actually transmitted
                    275: to the terminal as soon as previously-written characters
                    276: have finished typing.
                    277: (As noted above, input characters are normally 
                    278: echoed by putting them in the output queue
                    279: as they arrive.)
                    280: When a process produces characters more rapidly than they can be typed,
                    281: it will be suspended when its output queue exceeds some limit.
                    282: When the queue has drained down to some threshold
                    283: the program is resumed.
                    284: Even parity is normally generated on output.
                    285: The EOT character is not transmitted in cooked mode to prevent terminals
                    286: that respond to it from hanging up; programs using raw or cbreak mode
                    287: should be careful.
                    288: .PP
                    289: The terminal drivers provide necessary processing for cooked and CBREAK mode
                    290: output including delay generation for certain special characters and parity
                    291: generation.   Delays are available after backspaces ^H, form feeds ^L,
                    292: carriage returns ^M, tabs ^I and newlines ^J.  The driver will also optionally
                    293: expand tabs into spaces, where the tab stops are assumed to be set every
                    294: eight columns.  These functions are controlled by bits in the tty flags word;
                    295: see \fBSummary\fR below.
                    296: .PP
                    297: The terminal drivers provide for mapping between upper and lower case
                    298: on terminals lacking lower case, and for other special processing on
                    299: deficient terminals.
                    300: .PP
                    301: Finally, in the new terminal driver, there is a output flush character,
                    302: normally ^O, which sets the LFLUSHO bit in the local mode word, causing
                    303: subsequent output to be flushed until it is cleared by a program or more
                    304: input is typed.  This character has effect in both cooked and CBREAK modes
                    305: and causes pending input to be retyped if there is any pending input.
                    306: Ioctls to flush the characters in the input and output queues TIOCFLUSH,
                    307: and to return the number of character still in the output queue
                    308: TIOCOUTQ are also available.
                    309: .LP
                    310: .B "Upper case terminals and Hazeltines"
                    311: .PP
                    312: If the LCASE bit is set in the tty flags, then
                    313: all upper-case letters are mapped into
                    314: the corresponding lower-case letter.
                    315: The upper-case letter may be generated by preceding
                    316: it by `\\'.
                    317: If the new terminal driver is being used,
                    318: then upper case letters
                    319: are preceded by a `\e\|' when output.
                    320: In addition, the following escape sequences can be generated
                    321: on output and accepted on input:
                    322: .PP
                    323: .nf
                    324: for    \`      |       ~       {       }
                    325: use    \e\|\'  \e\|!   \e\|^   \e\|(   \e\|)
                    326: .fi
                    327: .PP
                    328: To deal with Hazeltine terminals, which do not understand that ~ has
                    329: been made into an ASCII character, the LTILDE bit may be set in the local
                    330: mode word when using the new terminal driver; in this case the character
                    331: ~ will be replaced with the character \` on output.
                    332: .LP
                    333: .B "Flow control."
                    334: .PP
                    335: There are two characters (the stop character, normally ^S, and the
                    336: start character, normally ^Q) which cause output to be suspended and
                    337: resumed respectively.  Extra stop characters typed when output
                    338: is already stopped have no effect, unless the start and stop characters
                    339: are made the same, in which case output resumes.
                    340: .PP
                    341: A bit in the flags word may be set to put the terminal into TANDEM mode.
                    342: In this mode the system produces a stop character (default ^S) when
                    343: the input queue is in danger of overflowing, and a start character (default
                    344: ^Q) when the input has drained sufficiently.  This mode is useful
                    345: when the terminal is actually another machine that obeys the
                    346: conventions.
                    347: .LP
                    348: .B "Line control and breaks."
                    349: .LP
                    350: There are several
                    351: .I ioctl
                    352: calls available to control the state of the terminal line.
                    353: The TIOCSBRK ioctl will set the break bit in the hardware interface
                    354: causing a break condition to exist; this can be cleared (usually after a delay
                    355: with
                    356: .IR sleep (3))
                    357: by TIOCCBRK.
                    358: Break conditions in the input are reflected as a null character in RAW mode
                    359: or as the interrupt character in cooked or CBREAK mode.
                    360: The TIOCCDTR ioctl will clear the data terminal ready condition; it can
                    361: be set again by TIOCSDTR.
                    362: .PP
                    363: When the carrier signal from the dataset drops (usually
                    364: because the user has hung up his terminal) a
                    365: SIGHUP hangup signal is sent to the processes in the distinguished
                    366: process group of the terminal; this usually causes them to terminate
                    367: (the SIGHUP can be suppressed by setting the LNOHANG bit in the local
                    368: state word of the driver.)
                    369: Access to the terminal by other processes is then normally revoked,
                    370: so any further reads will fail, and programs that read a terminal and test for
                    371: end-of-file on their input will terminate appropriately.
                    372: .PP
                    373: When using an ACU
                    374: it is possible to ask that the phone line be hung up on the last close
                    375: with the TIOCHPCL ioctl; this is normally done on the outgoing line.
                    376: .LP
                    377: .B "Interrupt characters."
                    378: .PP
                    379: There are several characters that generate interrupts in cooked and CBREAK
                    380: mode; all are sent the processes in the control group of the terminal,
                    381: as if a TIOCGPGRP ioctl were done to get the process group and then a
                    382: .IR killpg (2)
                    383: system call were done,
                    384: except that these characters also flush pending input and output when
                    385: typed at a terminal
                    386: (\fI\z'a\`'la\fR TIOCFLUSH).
                    387: The characters shown here are the defaults; the field names in the structures
                    388: (given below)
                    389: are also shown.
                    390: The characters may be changed,
                    391: although this is not often done.
                    392: .IP ^?
                    393: \fBt_intrc\fR (Delete) generates a SIGINTR signal.
                    394: This is the normal way to stop a process which is no longer interesting,
                    395: or to regain control in an interactive program.
                    396: .IP ^\e
                    397: \fBt_quitc\fR (FS) generates a SIGQUIT signal.
                    398: This is used to cause a program to terminate and produce a core image,
                    399: if possible,
                    400: in the file
                    401: .B core
                    402: in the current directory.
                    403: .IP ^Z
                    404: \fBt_suspc\fR (EM) generates a SIGTSTP signal, which is used to suspend
                    405: the current process group.
                    406: .IP ^Y
                    407: \fBt_dstopc\fR (SUB) generates a SIGTSTP signal as ^Z does, but the
                    408: signal is sent when a program attempts to read the ^Y, rather than when
                    409: it is typed.
                    410: .LP
                    411: .B "Job access control."
                    412: .PP
                    413: When using the new terminal driver,
                    414: if a process which is not in the distinguished process group of its
                    415: control terminal attempts to read from that terminal its process group is
                    416: sent a SIGTTIN signal, which normally causes the members of that process group
                    417: to stop.  If, however, the process is ignoring or holding SIGTTIN signal
                    418: is an orphan
                    419: .IR "" ( i.e.
                    420: its parent has exited and it has been inherited by the
                    421: .IR init (8)
                    422: process, or if it is a process in the middle of process creation using
                    423: .IR vfork (2)),
                    424: it is instead returned an end-of-file.  Under older UNIX systems
                    425: these processes would typically have had their input files reset to
                    426: .B /dev/null,
                    427: so this is a compatible change.
                    428: .PP
                    429: When using the new terminal driver with the LTOSTOP bit set in the local
                    430: modes, a process is prohibited from writing on its control terminal if it is
                    431: not in the distinguished process group for that terminal.
                    432: Processes which are holding or ignoring SIGTTOU signals, which are 
                    433: orphans, or which are in the middle of a
                    434: .IR vfork (2)
                    435: are excepted and allowed to produce output.
                    436: .LP
                    437: .B "Summary of modes."
                    438: .LP
                    439: Unfortunately, due to the evolution of the terminal driver,
                    440: there are 4 different structures which contain various portions of the
                    441: driver data.  The first of these (\fBsgttyb\fR)
                    442: contains that part of the information
                    443: largely common between version 6 and version 7 UNIX systems.
                    444: The second contains additional control characters added in version 7.
                    445: The third is a word of local state peculiar to the new terminal driver,
                    446: and the fourth is another structure of special characters added for the
                    447: new driver.  In the future a single structure may be made available
                    448: to programs which need to access all this information; most programs
                    449: need not concern themselves with all this state.
                    450: .LP
                    451: .Ul "Basic modes: sgtty."
                    452: .PP
                    453: The basic
                    454: .IR ioctl s
                    455: use the structure
                    456: defined in
                    457: .IR <sgtty.h> :
                    458: .PP
                    459: .ta .5i 1i
                    460: .nf
                    461: .ft 3
                    462: struct sgttyb {
                    463:        char    sg_ispeed;
                    464:        char    sg_ospeed;
                    465:        char    sg_stopbits;
                    466:        char    sg_erase;
                    467:        char    sg_kill;
                    468:        short   sg_flags;
                    469: };
                    470: .ft R
                    471: .fi
                    472: .PP
                    473: The
                    474: .I sg_ispeed 
                    475: and 
                    476: .I sg_ospeed
                    477: fields describe the input and output speeds of the
                    478: device according to the following table,
                    479: which corresponds to the DEC DH-11 interface.
                    480: If other hardware is used,
                    481: impossible speed changes are ignored.
                    482: Symbolic values in the table are as defined in
                    483: .IR <sgtty.h> .
                    484: .PP
                    485: .nf
                    486: .ta \w'B9600   'u +5n
                    487: B0     0       (hang up dataphone)
                    488: B50    1       50 baud
                    489: B75    2       75 baud
                    490: B110   3       110 baud
                    491: B134   4       134.5 baud
                    492: B150   5       150 baud
                    493: B200   6       200 baud
                    494: B300   7       300 baud
                    495: B600   8       600 baud
                    496: B1200  9       1200 baud
                    497: B1800  10      1800 baud
                    498: B2400  11      2400 baud
                    499: B4800  12      4800 baud
                    500: B9600  13      9600 baud
                    501: EXTA   14      External A
                    502: EXTB   15      External B
                    503: .fi
                    504: .DT
                    505: .PP
                    506: In the current configuration,
                    507: only 110, 150, 300 and 1200 baud are really supported on dial-up lines.
                    508: Code conversion and line control required for
                    509: IBM 2741's (134.5 baud)
                    510: must be implemented by the user's
                    511: program.
                    512: The half-duplex line discipline
                    513: required for the 202 dataset (1200 baud)
                    514: is not supplied; full-duplex 212 datasets work fine.
                    515: .PP
                    516: The
                    517: .I sg_stopbits
                    518: field of the argument structure
                    519: is used to specify the number of stop bits.
                    520: Specifying 1 gives 1 stop bit, 2 gives 2 stop bits, and
                    521: 3 gives 1.5 stop bits.
                    522: .PP
                    523: The
                    524: .I sg_erase
                    525: and
                    526: .I sg_kill
                    527: fields of the argument structure
                    528: specify the erase and kill characters respectively.
                    529: (Defaults are # and @.)
                    530: .PP
                    531: The
                    532: .I sg_flags
                    533: field of the argument structure
                    534: contains several bits that determine the
                    535: system's treatment of the terminal:
                    536: .PP
                    537: .ta \w'ALLDELAY 'u +\w'0100000 'u
                    538: .nf
                    539: ALLDELAY       0177400 Delay algorithm selection
                    540: BSDELAY        0100000 Select backspace delays (not implemented):
                    541: BS0    0
                    542: BS1    0100000
                    543: VTDELAY        0040000 Select form-feed and vertical-tab delays:
                    544: FF0    0
                    545: FF1    0100000
                    546: CRDELAY        0030000 Select carriage-return delays:
                    547: CR0    0
                    548: CR1    0010000
                    549: CR2    0020000
                    550: CR3    0030000
                    551: TBDELAY        0006000 Select tab delays:
                    552: TAB0   0
                    553: TAB1   0001000
                    554: TAB2   0004000
                    555: XTABS  0006000
                    556: NLDELAY        0001400 Select new-line delays:
                    557: NL0    0
                    558: NL1    0000400
                    559: NL2    0001000
                    560: NL3    0001400
                    561: EVENP  0000200 Even parity allowed on input (most terminals)
                    562: ODDP   0000100 Odd parity allowed on input
                    563: RAW    0000040 Raw mode: wake up on all characters, 8-bit interface
                    564: CRMOD  0000020 Map CR into LF; echo LF or CR as CR-LF
                    565: ECHO   0000010 Echo (full duplex)
                    566: LCASE  0000004 Map upper case to lower on input
                    567: CBREAK 0000002 Return each character as soon as typed
                    568: TANDEM 0000001 Automatic flow control
                    569: .DT
                    570: .fi
                    571: .PP
                    572: The delay bits specify how long
                    573: transmission stops to allow for mechanical or other movement
                    574: when certain characters are sent to the terminal.
                    575: In all cases a value of 0 indicates no delay.
                    576: .PP
                    577: Backspace delays are currently ignored but might
                    578: be used for Terminet 300's.
                    579: .PP
                    580: If a form-feed/vertical tab delay is specified,
                    581: it lasts for about 2 seconds.
                    582: .PP
                    583: Carriage-return delay type 1 lasts about .08 seconds
                    584: and is suitable for the Terminet 300.
                    585: Delay type 2 lasts about .16 seconds and is suitable
                    586: for the VT05 and the TI 700.
                    587: Delay type 3 is suitable for the concept-100 and pads lines
                    588: to be at least 9 characters at 9600 baud.
                    589: .PP
                    590: New-line delay type 1 is dependent on the current column
                    591: and is tuned for Teletype model 37's.
                    592: Type 2 is useful for the VT05 and is about .10 seconds.
                    593: Type 3 is unimplemented and is 0.
                    594: .PP
                    595: Tab delay type 1 is dependent on the amount of movement
                    596: and is tuned to the Teletype model
                    597: 37.
                    598: Type 3, called XTABS,
                    599: is not a delay at all but causes tabs to be replaced
                    600: by the appropriate number of spaces on output.
                    601: .PP
                    602: Input characters with the wrong parity, as determined by bits 200 and
                    603: 100, are ignored in cooked and CBREAK mode.
                    604: .PP
                    605: RAW
                    606: disables all processing save output flushing with LFLUSHO;
                    607: full 8 bits of input are given as soon as
                    608: it is available; all 8 bits are passed on output.
                    609: A break condition in the input is reported as a null character.
                    610: If the input queue overflows in raw mode it is discarded; this applies
                    611: to both new and old drivers.
                    612: .PP
                    613: CRMOD causes input carriage returns to be turned into
                    614: new-lines;
                    615: input of either CR or LF causes LF-CR both to
                    616: be echoed
                    617: (for terminals with a new-line function).
                    618: .PP
                    619: CBREAK is a sort of half-cooked (rare?) mode.
                    620: Programs can read each character as soon as typed, instead
                    621: of waiting for a full line;
                    622: all processing is done except the input editing:
                    623: character and word erase and line kill, input reprint,
                    624: and the special treatment of \e or EOT are disabled.
                    625: .PP
                    626: TANDEM mode causes the system to produce
                    627: a stop character (default ^S) whenever the input
                    628: queue is in danger of overflowing, and a start character
                    629: (default ^Q)
                    630: when the input queue has drained sufficiently.
                    631: It is useful for flow control when the `terminal'
                    632: is really another computer which understands the conventions.
                    633: .LP
                    634: .Ul "Basic ioctls"
                    635: .PP
                    636: In addition to the TIOCSETD and TIOCGETD disciplines discussed
                    637: in \fBLine disciplines\fR above,
                    638: a large number of other
                    639: .IR ioctl (2)
                    640: calls apply to terminals, and have the general form:
                    641: .PP
                    642: .B #include <sgtty.h>
                    643: .PP
                    644: .B ioctl(fildes, code, arg)
                    645: .br
                    646: .B struct sgttyb *arg;
                    647: .PP
                    648: The applicable codes are:
                    649: .IP TIOCGETP 15
                    650: Fetch the basic parameters associated with the terminal, and store
                    651: in the pointed-to \fIsgttyb\fR structure.
                    652: .IP TIOCSETP
                    653: Set the parameters according to the pointed-to \fIsgttyb\fR structure.
                    654: The interface delays until output is quiescent,
                    655: then throws away any unread characters,
                    656: before changing the modes.
                    657: .IP TIOCSETN
                    658: Set the parameters like TIOCSETP but do not delay or flush input.
                    659: Input is not preserved, however, when changing to or from RAW.
                    660: .PP
                    661: With the following codes the
                    662: .I arg
                    663: is ignored.
                    664: .IP TIOCEXCL 15
                    665: Set \*(lqexclusive-use\*(rq mode:
                    666: no further opens are permitted until the file has been closed.
                    667: .IP TIOCNXCL
                    668: Turn off \*(lqexclusive-use\*(rq mode.
                    669: .IP TIOCHPCL
                    670: When the file is closed for the last time,
                    671: hang up the terminal.
                    672: This is useful when the line is associated
                    673: with an ACU used to place outgoing calls.
                    674: .IP TIOCFLUSH
                    675: All characters waiting in input or output queues are flushed.
                    676: .LP
                    677: The remaining calls are not available in vanilla version 7 UNIX.
                    678: In cases where arguments are required, they are described; \fIarg\fR
                    679: should otherwise be given as 0.
                    680: .IP TIOCSTI 15
                    681: the argument is the address of a character which the system
                    682: pretends was typed on the terminal.
                    683: .IP TIOCSBRK 15
                    684: the break bit is set in the terminal.
                    685: .IP TIOCCBRK
                    686: the break bit is cleared.
                    687: .IP TIOCSDTR 
                    688: data terminal ready is set.
                    689: .IP TIOCCDTR
                    690: data terminal ready is cleared.
                    691: .IP TIOCGPGRP
                    692: arg is the address of a word into which is placed the process group
                    693: number of the control terminal.
                    694: .IP TIOCSPGRP
                    695: arg is a word (typically a process id) which becomes the process
                    696: group for the control terminal.
                    697: .IP FIONREAD
                    698: returns in the long integer whose address is arg the number
                    699: of immediately readable characters from the argument unit.
                    700: This works for files, pipes, and terminals, but not (yet)
                    701: for multiplexed channels.
                    702: .LP
                    703: .Ul Tchars
                    704: .PP
                    705: The second structure associated with each terminal specifies
                    706: characters that are special in both the old and new terminal interfaces:
                    707: The following structure is defined in
                    708: .IR <sys/ioctl.h> ,
                    709: which is automatically included in
                    710: .IR <sgtty.h> :
                    711: .PP
                    712: .nf
                    713: .ft 3
                    714: .ta .5i 1i 2i 
                    715: struct tchars {
                    716:        char    t_intrc;        /* interrupt */
                    717:        char    t_quitc;        /* quit */
                    718:        char    t_startc;       /* start output */
                    719:        char    t_stopc;        /* stop output */
                    720:        char    t_eofc;         /* end-of-file */
                    721:        char    t_brkc;         /* input delimiter (like nl) */
                    722: };
                    723: .DT
                    724: .fi
                    725: .ft R
                    726: .PP
                    727: The default values for these characters are
                    728: ^?, ^\e\|, ^Q, ^S, ^D, and \-1.
                    729: A character value of \-1
                    730: eliminates the effect of that character.
                    731: The
                    732: .I t_brkc
                    733: character, by default \-1,
                    734: acts like a new-line in that it terminates a `line,'
                    735: is echoed, and is passed to the program.
                    736: The `stop' and `start' characters may be the same,
                    737: to produce a toggle effect.
                    738: It is probably counterproductive to make
                    739: other special characters (including erase and kill)
                    740: identical.
                    741: The applicable ioctl calls are:
                    742: .IP TIOCGETC 12
                    743: Get the special characters and put them in the specified structure.
                    744: .IP TIOCSETC 12
                    745: Set the special characters to those given in the structure.
                    746: .LP
                    747: .Ul "Local mode"
                    748: .PP
                    749: The third structure associated with each terminal is a local mode word;
                    750: except for the LNOHANG bit, this word is interpreted only when the new
                    751: driver is in use.
                    752: The bits of the local mode word are:
                    753: .sp
                    754: .nf
                    755: LCRTBS 000001  Backspace on erase rather than echoing erase
                    756: LPRTERA        000002  Printing terminal erase mode
                    757: LCRTERA        000004  Erase character echoes as backspace-space-backspace
                    758: LTILDE 000010  Convert ~ to \` on output (for Hazeltine terminals)
                    759: LMDMBUF        000020  Stop/start output when carrier drops
                    760: LLITOUT        000040  Suppress output translations
                    761: LTOSTOP        000100  Send SIGTTOU for background output
                    762: LFLUSHO        000200  Output is being flushed
                    763: LNOHANG        000400  Don't send hangup when carrier drops
                    764: LETXACK        001000  Diablo style buffer hacking (unimplemented)
                    765: LCRTKIL        002000  BS-space-BS erase entire line on line kill
                    766: LINTRUP        004000  Generate interrupt SIGTINT when input ready to read
                    767: LCTLECH        010000  Echo input control chars as ^X, delete as ^?
                    768: LPENDIN        020000  Retype pending input at next read or input character
                    769: LDECCTQ        040000  Only ^Q restarts output after ^S, like DEC systems
                    770: .fi
                    771: .sp
                    772: The applicable
                    773: .I ioctl
                    774: functions are:
                    775: .IP TIOCLBIS 15
                    776: arg is the address of a 
                    777: mask which is the bits to be set in the local mode word.
                    778: .IP TIOCLBIC
                    779: arg is the address of a mask of bits to be cleared in the local mode word.
                    780: .IP TIOCLSET
                    781: arg is the address of a mask to be placed in the local mode word.
                    782: .IP TIOCLGET
                    783: arg is the address of a word into which the current mask is placed.
                    784: .LP
                    785: .Ul "Local special chars"
                    786: .PP
                    787: The
                    788: final structure associated with each terminal is the
                    789: .I ltchars
                    790: structure which defines interrupt characters
                    791: for the new terminal driver.
                    792: Its structure is:
                    793: .nf
                    794: .sp
                    795: .ta .5i 1i 2i
                    796: .ft B
                    797: struct ltchars {
                    798:        char    t_suspc;        /* stop process signal */
                    799:        char    t_dstopc;       /* delayed stop process signal */
                    800:        char    t_rprntc;       /* reprint line */
                    801:        char    t_flushc;       /* flush output (toggles) */
                    802:        char    t_werasec;      /* word erase */
                    803:        char    t_lnextc;       /* literal next character */
                    804: };
                    805: .ft R
                    806: .fi
                    807: .sp
                    808: The default values for these characters are ^Z, ^Y, ^R, ^O, ^W, and ^V.
                    809: A value of \-1 disables the character.
                    810: .PP
                    811: The applicable \fIioctl\fR functions are:
                    812: .IP TIOCSLTC 12
                    813: args is the address of a 
                    814: .I ltchars
                    815: structure which defines the new local special characters.
                    816: .IP TIOCGLTC 12
                    817: args is the address of a
                    818: .I ltchars
                    819: structure into which is placed the current set of local special characters.
                    820: .SH FILES
                    821: /dev/tty
                    822: .br
                    823: /dev/tty*
                    824: .br
                    825: /dev/console
                    826: .SH SEE ALSO
                    827: csh(1), stty(1),
                    828: ioctl(2), signal(2), sigsys(2), stty(2),
                    829: getty(8), init(8), newtty(4)
                    830: .SH BUGS
                    831: Half-duplex terminals are not supported.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.