xref: /freebsd/share/man/man4/termios.4 (revision db3357b8df2bcb9bad70c4694cd6eb95bbd15e44)
1afe61c15SRodney W. Grimes.\" Copyright (c) 1991, 1992, 1993
2afe61c15SRodney W. Grimes.\"	The Regents of the University of California.  All rights reserved.
3afe61c15SRodney W. Grimes.\"
4afe61c15SRodney W. Grimes.\" Redistribution and use in source and binary forms, with or without
5afe61c15SRodney W. Grimes.\" modification, are permitted provided that the following conditions
6afe61c15SRodney W. Grimes.\" are met:
7afe61c15SRodney W. Grimes.\" 1. Redistributions of source code must retain the above copyright
8afe61c15SRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer.
9afe61c15SRodney W. Grimes.\" 2. Redistributions in binary form must reproduce the above copyright
10afe61c15SRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer in the
11afe61c15SRodney W. Grimes.\"    documentation and/or other materials provided with the distribution.
12afe61c15SRodney W. Grimes.\" 3. All advertising materials mentioning features or use of this software
13afe61c15SRodney W. Grimes.\"    must display the following acknowledgement:
14afe61c15SRodney W. Grimes.\"	This product includes software developed by the University of
15afe61c15SRodney W. Grimes.\"	California, Berkeley and its contributors.
16afe61c15SRodney W. Grimes.\" 4. Neither the name of the University nor the names of its contributors
17afe61c15SRodney W. Grimes.\"    may be used to endorse or promote products derived from this software
18afe61c15SRodney W. Grimes.\"    without specific prior written permission.
19afe61c15SRodney W. Grimes.\"
20afe61c15SRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21afe61c15SRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22afe61c15SRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23afe61c15SRodney W. Grimes.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24afe61c15SRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25afe61c15SRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26afe61c15SRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27afe61c15SRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28afe61c15SRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29afe61c15SRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30afe61c15SRodney W. Grimes.\" SUCH DAMAGE.
31afe61c15SRodney W. Grimes.\"
32afe61c15SRodney W. Grimes.\"	@(#)termios.4	8.4 (Berkeley) 4/19/94
337f3dea24SPeter Wemm.\" $FreeBSD$
34afe61c15SRodney W. Grimes.\"
35afe61c15SRodney W. Grimes.Dd April 19, 1994
36afe61c15SRodney W. Grimes.Dt TERMIOS 4
373d45e180SRuslan Ermilov.Os
38afe61c15SRodney W. Grimes.Sh NAME
39afe61c15SRodney W. Grimes.Nm termios
40afe61c15SRodney W. Grimes.Nd general terminal line discipline
41afe61c15SRodney W. Grimes.Sh SYNOPSIS
42afe61c15SRodney W. Grimes.Fd #include <termios.h>
43afe61c15SRodney W. Grimes.Sh DESCRIPTION
44afe61c15SRodney W. GrimesThis describes a general terminal line discipline that is
45afe61c15SRodney W. Grimessupported on tty asynchronous communication ports.
46afe61c15SRodney W. Grimes.Ss Opening a Terminal Device File
47afe61c15SRodney W. GrimesWhen a terminal file is opened, it normally causes the process to wait
48afe61c15SRodney W. Grimesuntil a connection is established.  For most hardware, the presence
49afe61c15SRodney W. Grimesof a connection is indicated by the assertion of the hardware
50d0353b83SRuslan Ermilov.Dv CARRIER
51d0353b83SRuslan Ermilovline.
52afe61c15SRodney W. GrimesIf the termios structure associated with the terminal file has the
53afe61c15SRodney W. Grimes.Dv CLOCAL
54afe61c15SRodney W. Grimesflag set in the cflag, or if the
55afe61c15SRodney W. Grimes.Dv O_NONBLOCK
56afe61c15SRodney W. Grimesflag is set
57afe61c15SRodney W. Grimesin the
58afe61c15SRodney W. Grimes.Xr open 2
59afe61c15SRodney W. Grimescall, then the open will succeed even without
60afe61c15SRodney W. Grimesa connection being present.
61afe61c15SRodney W. GrimesIn practice, applications
62afe61c15SRodney W. Grimesseldom open these files; they are opened by special programs, such
63afe61c15SRodney W. Grimesas
64906c1e27SMike Pritchard.Xr getty 8
65afe61c15SRodney W. Grimesor
66906c1e27SMike Pritchard.Xr rlogind 8 ,
67afe61c15SRodney W. Grimesand become
68afe61c15SRodney W. Grimesan application's standard input, output, and error files.
69afe61c15SRodney W. Grimes.Ss Job Control in a Nutshell
70afe61c15SRodney W. GrimesEvery process is associated with a particular process group and session.
71afe61c15SRodney W. GrimesThe grouping is hierarchical: every member of a particular process group is a
72afe61c15SRodney W. Grimesmember of the same session.  This structuring is used in managing groups
73afe61c15SRodney W. Grimesof related processes for purposes of
74afe61c15SRodney W. Grimes.\" .Gw "job control" ;
75afe61c15SRodney W. Grimes.Em "job control" ;
76afe61c15SRodney W. Grimesthat is, the
77afe61c15SRodney W. Grimesability from the keyboard (or from program control) to simultaneously
78afe61c15SRodney W. Grimesstop or restart
79afe61c15SRodney W. Grimesa complex command (a command composed of one or more related
80afe61c15SRodney W. Grimesprocesses).  The grouping into process groups allows delivering
81afe61c15SRodney W. Grimesof signals that stop or start the group as a whole, along with
82afe61c15SRodney W. Grimesarbitrating which process group has access to the single controlling
83afe61c15SRodney W. Grimesterminal.  The grouping at a higher layer into sessions is to restrict
84afe61c15SRodney W. Grimesthe job control related signals and system calls to within processes
85afe61c15SRodney W. Grimesresulting from a particular instance of a "login".  Typically, a session
86afe61c15SRodney W. Grimesis created when a user logs in, and the login terminal is setup
87afe61c15SRodney W. Grimesto be the controlling terminal; all processes spawned from that
88afe61c15SRodney W. Grimeslogin shell are in the same session, and inherit the controlling
89afe61c15SRodney W. Grimesterminal.
90edf0e5b3SMike Pritchard.Pp
91afe61c15SRodney W. GrimesA job control shell
92afe61c15SRodney W. Grimesoperating interactively (that is, reading commands from a terminal)
93afe61c15SRodney W. Grimesnormally groups related processes together by placing them into the
94afe61c15SRodney W. Grimessame process group.  A set of processes in the same process group
95afe61c15SRodney W. Grimesis collectively referred to as a "job". When the foreground process
96afe61c15SRodney W. Grimesgroup of the terminal is the same as the process group of a particular
97afe61c15SRodney W. Grimesjob, that job is said to be in the "foreground".  When the process
98a67e435cSChris Costellogroup of the terminal is different from the process group of
99afe61c15SRodney W. Grimesa job (but is still the controlling terminal), that job is said
100afe61c15SRodney W. Grimesto be in the "background".  Normally the
101afe61c15SRodney W. Grimesshell reads a command and starts the job that implements that
102afe61c15SRodney W. Grimescommand.  If the command is to be started in the foreground (typical), it
103afe61c15SRodney W. Grimessets the process group of the terminal to the process group
104afe61c15SRodney W. Grimesof the started job, waits for the job to complete, and then
105afe61c15SRodney W. Grimessets the process group of the terminal back to its own process
106afe61c15SRodney W. Grimesgroup (it puts itself into the foreground).  If the job is to
107afe61c15SRodney W. Grimesbe started in the background (as denoted by the shell operator "&"),
108afe61c15SRodney W. Grimesit never changes the process group of the terminal and doesn't
109afe61c15SRodney W. Grimeswait for the job to complete (that is, it immediately attempts to read the next
110afe61c15SRodney W. Grimescommand).  If the job is started in the foreground, the user may
111afe61c15SRodney W. Grimestype a key (usually
112afe61c15SRodney W. Grimes.Ql \&^Z )
113afe61c15SRodney W. Grimeswhich generates the terminal stop signal
114afe61c15SRodney W. Grimes.Pq Dv SIGTSTP
115db3357b8SSheldon Hearnand has the effect of stopping the entire job.
116afe61c15SRodney W. GrimesThe shell will notice that the job stopped, and will resume running after
117afe61c15SRodney W. Grimesplacing itself in the foreground.
118afe61c15SRodney W. GrimesThe shell also has commands for placing stopped jobs in the background,
119afe61c15SRodney W. Grimesand for placing stopped or background jobs into the foreground.
120afe61c15SRodney W. Grimes.Ss Orphaned Process Groups
121afe61c15SRodney W. GrimesAn orphaned process group is a process group that has no process
122afe61c15SRodney W. Grimeswhose parent is in a different process group, yet is in the same
123afe61c15SRodney W. Grimessession.  Conceptually it means a process group that doesn't have
124afe61c15SRodney W. Grimesa parent that could do anything if it were to be stopped.  For example,
125afe61c15SRodney W. Grimesthe initial login shell is typically in an orphaned process group.
126afe61c15SRodney W. GrimesOrphaned process groups are immune to keyboard generated stop
127afe61c15SRodney W. Grimessignals and job control signals resulting from reads or writes to the
128afe61c15SRodney W. Grimescontrolling terminal.
129afe61c15SRodney W. Grimes.Ss The Controlling Terminal
130afe61c15SRodney W. GrimesA terminal may belong to a process as its controlling terminal.  Each
131afe61c15SRodney W. Grimesprocess of a session that has a controlling terminal has the same
132afe61c15SRodney W. Grimescontrolling terminal.  A terminal may be the controlling terminal for at
133afe61c15SRodney W. Grimesmost one session.  The controlling terminal for a session is allocated by
134afe61c15SRodney W. Grimesthe session leader by issuing the
135afe61c15SRodney W. Grimes.Dv TIOCSCTTY
136afe61c15SRodney W. Grimesioctl.  A controlling terminal
137afe61c15SRodney W. Grimesis never acquired by merely opening a terminal device file.
138afe61c15SRodney W. GrimesWhen a controlling terminal becomes
139afe61c15SRodney W. Grimesassociated with a session, its foreground process group is set to
140afe61c15SRodney W. Grimesthe process group of the session leader.
141afe61c15SRodney W. Grimes.Pp
142afe61c15SRodney W. GrimesThe controlling terminal is inherited by a child process during a
143afe61c15SRodney W. Grimes.Xr fork 2
144afe61c15SRodney W. Grimesfunction call.  A process relinquishes its controlling terminal when it
145afe61c15SRodney W. Grimescreates a new session with the
146929f3023SJoseph Koshy.Xr setsid 2
147afe61c15SRodney W. Grimesfunction; other processes
148afe61c15SRodney W. Grimesremaining in the old session that had this terminal as their controlling
149afe61c15SRodney W. Grimesterminal continue to have it.
150afe61c15SRodney W. GrimesA process does not relinquish its
151afe61c15SRodney W. Grimescontrolling terminal simply by closing all of its file descriptors
152afe61c15SRodney W. Grimesassociated with the controlling terminal if other processes continue to
153afe61c15SRodney W. Grimeshave it open.
154afe61c15SRodney W. Grimes.Pp
155afe61c15SRodney W. GrimesWhen a controlling process terminates, the controlling terminal is
156afe61c15SRodney W. Grimesdisassociated from the current session, allowing it to be acquired by a
157afe61c15SRodney W. Grimesnew session leader.  Subsequent access to the terminal by other processes
158afe61c15SRodney W. Grimesin the earlier session will be denied, with attempts to access the
159afe61c15SRodney W. Grimesterminal treated as if modem disconnect had been sensed.
160afe61c15SRodney W. Grimes.Ss Terminal Access Control
161afe61c15SRodney W. GrimesIf a process is in the foreground process group of its controlling
162afe61c15SRodney W. Grimesterminal, read operations are allowed.
163afe61c15SRodney W. GrimesAny attempts by a process
164afe61c15SRodney W. Grimesin a background process group to read from its controlling terminal
165afe61c15SRodney W. Grimescauses a
166afe61c15SRodney W. Grimes.Dv SIGTTIN
167afe61c15SRodney W. Grimessignal to be sent to
168afe61c15SRodney W. Grimesthe process's group
169afe61c15SRodney W. Grimesunless one of the
170afe61c15SRodney W. Grimesfollowing special cases apply:  If the reading process is ignoring or
171afe61c15SRodney W. Grimesblocking the
172f167d7fbSSheldon Hearn.Dv SIGTTIN
173f167d7fbSSheldon Hearnsignal, or if the process group of the reading
174afe61c15SRodney W. Grimesprocess is orphaned, the
175afe61c15SRodney W. Grimes.Xr read 2
176afe61c15SRodney W. Grimesreturns -1 with
177afe61c15SRodney W. Grimes.Va errno set to
178b92a189eSRuslan Ermilov.Er EIO
179afe61c15SRodney W. Grimesand no
180afe61c15SRodney W. Grimessignal is sent.  The default action of the
181afe61c15SRodney W. Grimes.Dv SIGTTIN
182afe61c15SRodney W. Grimessignal is to stop the
183afe61c15SRodney W. Grimesprocess to which it is sent.
184afe61c15SRodney W. Grimes.Pp
185afe61c15SRodney W. GrimesIf a process is in the foreground process group of its controlling
186afe61c15SRodney W. Grimesterminal, write operations are allowed.
187afe61c15SRodney W. GrimesAttempts by a process in a background process group to write to its
188afe61c15SRodney W. Grimescontrolling terminal will cause the process group to be sent a
189afe61c15SRodney W. Grimes.Dv SIGTTOU
190afe61c15SRodney W. Grimessignal unless one of the following special cases apply:  If
191afe61c15SRodney W. Grimes.Dv TOSTOP
192afe61c15SRodney W. Grimesis not
193afe61c15SRodney W. Grimesset, or if
194afe61c15SRodney W. Grimes.Dv TOSTOP
195afe61c15SRodney W. Grimesis set and the process is ignoring or blocking the
196afe61c15SRodney W. Grimes.Dv SIGTTOU
197afe61c15SRodney W. Grimessignal, the process is allowed to write to the terminal and the
198afe61c15SRodney W. Grimes.Dv SIGTTOU
199afe61c15SRodney W. Grimessignal is not sent.  If
200afe61c15SRodney W. Grimes.Dv TOSTOP
201afe61c15SRodney W. Grimesis set, and the process group of
202afe61c15SRodney W. Grimesthe writing process is orphaned, and the writing process is not ignoring
203afe61c15SRodney W. Grimesor blocking
204afe61c15SRodney W. Grimes.Dv SIGTTOU ,
205afe61c15SRodney W. Grimesthe
206edf0e5b3SMike Pritchard.Xr write 2
207afe61c15SRodney W. Grimesreturns -1 with
208afe61c15SRodney W. Grimeserrno set to
209b92a189eSRuslan Ermilov.Er EIO
210afe61c15SRodney W. Grimesand no signal is sent.
211afe61c15SRodney W. Grimes.Pp
212afe61c15SRodney W. GrimesCertain calls that set terminal parameters are treated in the same
213afe61c15SRodney W. Grimesfashion as write, except that
214afe61c15SRodney W. Grimes.Dv TOSTOP
215afe61c15SRodney W. Grimesis ignored; that is, the effect is
216afe61c15SRodney W. Grimesidentical to that of terminal writes when
217afe61c15SRodney W. Grimes.Dv TOSTOP
218afe61c15SRodney W. Grimesis set.
219afe61c15SRodney W. Grimes.Ss Input Processing and Reading Data
220afe61c15SRodney W. GrimesA terminal device associated with a terminal device file may operate in
221afe61c15SRodney W. Grimesfull-duplex mode, so that data may arrive even while output is occurring.
222afe61c15SRodney W. GrimesEach terminal device file has associated with it an input queue, into
223afe61c15SRodney W. Grimeswhich incoming data is stored by the system before being read by a
224afe61c15SRodney W. Grimesprocess.  The system imposes a limit,
225afe61c15SRodney W. Grimes.Pf \&{ Dv MAX_INPUT Ns \&} ,
226afe61c15SRodney W. Grimeson the number of
227afe61c15SRodney W. Grimesbytes that may be stored in the input queue.  The behavior of the system
228afe61c15SRodney W. Grimeswhen this limit is exceeded depends on the setting of the
229afe61c15SRodney W. Grimes.Dv IMAXBEL
230afe61c15SRodney W. Grimesflag in the termios
231afe61c15SRodney W. Grimes.Fa c_iflag .
232afe61c15SRodney W. GrimesIf this flag is set, the terminal
233afe61c15SRodney W. Grimesis sent an
234afe61c15SRodney W. Grimes.Tn ASCII
235afe61c15SRodney W. Grimes.Dv BEL
236afe61c15SRodney W. Grimescharacter each time a character is received
237afe61c15SRodney W. Grimeswhile the input queue is full.  Otherwise, the input queue is flushed
238afe61c15SRodney W. Grimesupon receiving the character.
239afe61c15SRodney W. Grimes.Pp
240afe61c15SRodney W. GrimesTwo general kinds of input processing are available, determined by
241afe61c15SRodney W. Grimeswhether the terminal device file is in canonical mode or noncanonical
2426d249eeeSSheldon Hearnmode.
2436d249eeeSSheldon HearnAdditionally,
244afe61c15SRodney W. Grimesinput characters are processed according to the
245afe61c15SRodney W. Grimes.Fa c_iflag
246afe61c15SRodney W. Grimesand
247afe61c15SRodney W. Grimes.Fa c_lflag
248afe61c15SRodney W. Grimesfields.  Such processing can include echoing, which
249afe61c15SRodney W. Grimesin general means transmitting input characters immediately back to the
250afe61c15SRodney W. Grimesterminal when they are received from the terminal.  This is useful for
251afe61c15SRodney W. Grimesterminals that can operate in full-duplex mode.
252afe61c15SRodney W. Grimes.Pp
253afe61c15SRodney W. GrimesThe manner in which data is provided to a process reading from a terminal
254afe61c15SRodney W. Grimesdevice file is dependent on whether the terminal device file is in
255afe61c15SRodney W. Grimescanonical or noncanonical mode.
256afe61c15SRodney W. Grimes.Pp
257afe61c15SRodney W. GrimesAnother dependency is whether the
258afe61c15SRodney W. Grimes.Dv O_NONBLOCK
259afe61c15SRodney W. Grimesflag is set by
260edf0e5b3SMike Pritchard.Xr open 2
261afe61c15SRodney W. Grimesor
262edf0e5b3SMike Pritchard.Xr fcntl 2 .
263afe61c15SRodney W. GrimesIf the
264afe61c15SRodney W. Grimes.Dv O_NONBLOCK
265afe61c15SRodney W. Grimesflag is clear, then the read request is
266afe61c15SRodney W. Grimesblocked until data is available or a signal has been received.  If the
267afe61c15SRodney W. Grimes.Dv O_NONBLOCK
268afe61c15SRodney W. Grimesflag is set, then the read request is completed, without
269afe61c15SRodney W. Grimesblocking, in one of three ways:
270afe61c15SRodney W. Grimes.Bl -enum -offset indent
271afe61c15SRodney W. Grimes.It
272afe61c15SRodney W. GrimesIf there is enough data available to satisfy the entire request,
273afe61c15SRodney W. Grimesand the read completes successfully the number of
274afe61c15SRodney W. Grimesbytes read is returned.
275afe61c15SRodney W. Grimes.It
276afe61c15SRodney W. GrimesIf there is not enough data available to satisfy the entire
277afe61c15SRodney W. Grimesrequest, and the read completes successfully, having read as
278afe61c15SRodney W. Grimesmuch data as possible, the number of bytes read is returned.
279afe61c15SRodney W. Grimes.It
280afe61c15SRodney W. GrimesIf there is no data available, the read returns -1, with
281afe61c15SRodney W. Grimeserrno set to
282afe61c15SRodney W. Grimes.Er EAGAIN .
283afe61c15SRodney W. Grimes.El
284afe61c15SRodney W. Grimes.Pp
285afe61c15SRodney W. GrimesWhen data is available depends on whether the input processing mode is
286afe61c15SRodney W. Grimescanonical or noncanonical.
287afe61c15SRodney W. Grimes.Ss Canonical Mode Input Processing
288afe61c15SRodney W. GrimesIn canonical mode input processing, terminal input is processed in units
289afe61c15SRodney W. Grimesof lines.  A line is delimited by a newline
290afe61c15SRodney W. Grimes.Ql \&\en
291afe61c15SRodney W. Grimescharacter, an end-of-file
292afe61c15SRodney W. Grimes.Pq Dv EOF
293afe61c15SRodney W. Grimescharacter, or an end-of-line
294afe61c15SRodney W. Grimes.Pq Dv EOL
295afe61c15SRodney W. Grimescharacter.  See the
296afe61c15SRodney W. Grimes.Sx "Special Characters"
297afe61c15SRodney W. Grimessection for
298afe61c15SRodney W. Grimesmore information on
299afe61c15SRodney W. Grimes.Dv EOF
300afe61c15SRodney W. Grimesand
301afe61c15SRodney W. Grimes.Dv EOL .
302afe61c15SRodney W. GrimesThis means that a read request will
303afe61c15SRodney W. Grimesnot return until an entire line has been typed, or a signal has been
304afe61c15SRodney W. Grimesreceived.  Also, no matter how many bytes are requested in the read call,
305afe61c15SRodney W. Grimesat most one line is returned.  It is not, however, necessary to
306afe61c15SRodney W. Grimesread a whole line at once; any number of bytes, even one, may be
307afe61c15SRodney W. Grimesrequested in a read without losing information.
308afe61c15SRodney W. Grimes.Pp
309afe61c15SRodney W. Grimes.Pf \&{ Dv MAX_CANON Ns \&}
310afe61c15SRodney W. Grimesis a limit on the
311afe61c15SRodney W. Grimesnumber of bytes in a line.
312afe61c15SRodney W. GrimesThe behavior of the system when this limit is
313afe61c15SRodney W. Grimesexceeded is the same as when the input queue limit
314afe61c15SRodney W. Grimes.Pf \&{ Dv MAX_INPUT Ns \&} ,
315afe61c15SRodney W. Grimesis exceeded.
316afe61c15SRodney W. Grimes.Pp
317afe61c15SRodney W. GrimesErase and kill processing occur when either of two special characters,
318afe61c15SRodney W. Grimesthe
319afe61c15SRodney W. Grimes.Dv ERASE
320afe61c15SRodney W. Grimesand
321afe61c15SRodney W. Grimes.Dv KILL
322afe61c15SRodney W. Grimescharacters (see the
323afe61c15SRodney W. Grimes.Sx "Special Characters section" ) ,
324afe61c15SRodney W. Grimesis received.
325afe61c15SRodney W. GrimesThis processing affects data in the input queue that has not yet been
326afe61c15SRodney W. Grimesdelimited by a newline
327afe61c15SRodney W. Grimes.Dv NL ,
328afe61c15SRodney W. Grimes.Dv EOF ,
329afe61c15SRodney W. Grimesor
330afe61c15SRodney W. Grimes.Dv EOL
331afe61c15SRodney W. Grimescharacter.  This un-delimited
332afe61c15SRodney W. Grimesdata makes up the current line.  The
333afe61c15SRodney W. Grimes.Dv ERASE
334afe61c15SRodney W. Grimescharacter deletes the last
335afe61c15SRodney W. Grimescharacter in the current line, if there is any.  The
336afe61c15SRodney W. Grimes.Dv KILL
337afe61c15SRodney W. Grimescharacter
338afe61c15SRodney W. Grimesdeletes all data in the current line, if there is any.  The
339afe61c15SRodney W. Grimes.Dv ERASE
340afe61c15SRodney W. Grimesand
341afe61c15SRodney W. Grimes.Dv KILL
342afe61c15SRodney W. Grimescharacters have no effect if there is no data in the current line.
343afe61c15SRodney W. GrimesThe
344afe61c15SRodney W. Grimes.Dv ERASE
345afe61c15SRodney W. Grimesand
346afe61c15SRodney W. Grimes.Dv KILL
347afe61c15SRodney W. Grimescharacters themselves are not placed in the input
348afe61c15SRodney W. Grimesqueue.
349afe61c15SRodney W. Grimes.Ss Noncanonical Mode Input Processing
350afe61c15SRodney W. GrimesIn noncanonical mode input processing, input bytes are not assembled into
351afe61c15SRodney W. Grimeslines, and erase and kill processing does not occur.  The values of the
352ed7922d3SMike Pritchard.Dv VMIN
353afe61c15SRodney W. Grimesand
354ed7922d3SMike Pritchard.Dv VTIME
355afe61c15SRodney W. Grimesmembers of the
356afe61c15SRodney W. Grimes.Fa c_cc
357afe61c15SRodney W. Grimesarray are used to determine how to
358afe61c15SRodney W. Grimesprocess the bytes received.
359afe61c15SRodney W. Grimes.Pp
3605f1376d7SMike Pritchard.Dv MIN
361afe61c15SRodney W. Grimesrepresents the minimum number of bytes that should be received when
362afe61c15SRodney W. Grimesthe
363edf0e5b3SMike Pritchard.Xr read 2
364afe61c15SRodney W. Grimesfunction successfully returns.
3655f1376d7SMike Pritchard.Dv TIME
366afe61c15SRodney W. Grimesis a timer of 0.1 second
367afe61c15SRodney W. Grimesgranularity that is used to time out bursty and short term data
368afe61c15SRodney W. Grimestransmissions.  If
3695f1376d7SMike Pritchard.Dv MIN
370afe61c15SRodney W. Grimesis greater than
371afe61c15SRodney W. Grimes.Dv \&{ Dv MAX_INPUT Ns \&} ,
372afe61c15SRodney W. Grimesthe response to the
373afe61c15SRodney W. Grimesrequest is undefined.  The four possible values for
3745f1376d7SMike Pritchard.Dv MIN
375afe61c15SRodney W. Grimesand
3765f1376d7SMike Pritchard.Dv TIME
377afe61c15SRodney W. Grimesand
378afe61c15SRodney W. Grimestheir interactions are described below.
3795f1376d7SMike Pritchard.Ss "Case A: MIN > 0, TIME > 0"
380afe61c15SRodney W. GrimesIn this case
3815f1376d7SMike Pritchard.Dv TIME
382afe61c15SRodney W. Grimesserves as an inter-byte timer and is activated after
383afe61c15SRodney W. Grimesthe first byte is received.  Since it is an inter-byte timer, it is reset
384afe61c15SRodney W. Grimesafter a byte is received.  The interaction between
3855f1376d7SMike Pritchard.Dv MIN
386afe61c15SRodney W. Grimesand
3875f1376d7SMike Pritchard.Dv TIME
388afe61c15SRodney W. Grimesis as
389afe61c15SRodney W. Grimesfollows:  as soon as one byte is received, the inter-byte timer is
390afe61c15SRodney W. Grimesstarted.  If
3915f1376d7SMike Pritchard.Dv MIN
392afe61c15SRodney W. Grimesbytes are received before the inter-byte timer expires
393afe61c15SRodney W. Grimes(remember that the timer is reset upon receipt of each byte), the read is
394afe61c15SRodney W. Grimessatisfied.  If the timer expires before
3955f1376d7SMike Pritchard.Dv MIN
396afe61c15SRodney W. Grimesbytes are received, the
397afe61c15SRodney W. Grimescharacters received to that point are returned to the user.  Note that if
3985f1376d7SMike Pritchard.Dv TIME
399afe61c15SRodney W. Grimesexpires at least one byte is returned because the timer would
400afe61c15SRodney W. Grimesnot have been enabled unless a byte was received.  In this case
4015f1376d7SMike Pritchard.Pf \&( Dv MIN
402afe61c15SRodney W. Grimes> 0,
4035f1376d7SMike Pritchard.Dv TIME
404afe61c15SRodney W. Grimes> 0) the read blocks until the
4055f1376d7SMike Pritchard.Dv MIN
406afe61c15SRodney W. Grimesand
4075f1376d7SMike Pritchard.Dv TIME
408afe61c15SRodney W. Grimesmechanisms are
409afe61c15SRodney W. Grimesactivated by the receipt of the first byte, or a signal is received.  If
410edf0e5b3SMike Pritcharddata is in the buffer at the time of the
411edf0e5b3SMike Pritchard.Fn read ,
412edf0e5b3SMike Pritchardthe result is as
413edf0e5b3SMike Pritchardif data had been received immediately after the
414edf0e5b3SMike Pritchard.Fn read .
4155f1376d7SMike Pritchard.Ss "Case B: MIN > 0, TIME = 0"
416afe61c15SRodney W. GrimesIn this case, since the value of
4175f1376d7SMike Pritchard.Dv TIME
418afe61c15SRodney W. Grimesis zero, the timer plays no role
419afe61c15SRodney W. Grimesand only
4205f1376d7SMike Pritchard.Dv MIN
421afe61c15SRodney W. Grimesis significant.  A pending read is not satisfied until
4225f1376d7SMike Pritchard.Dv MIN
423afe61c15SRodney W. Grimesbytes are received (i.e., the pending read blocks until
4245f1376d7SMike Pritchard.Dv MIN
425afe61c15SRodney W. Grimesbytes
426afe61c15SRodney W. Grimesare received), or a signal is received.  A program that uses this case to
427afe61c15SRodney W. Grimesread record-based terminal
428afe61c15SRodney W. Grimes.Dv I/O
429afe61c15SRodney W. Grimesmay block indefinitely in the read
430afe61c15SRodney W. Grimesoperation.
4315f1376d7SMike Pritchard.Ss "Case C: MIN = 0, TIME > 0"
432afe61c15SRodney W. GrimesIn this case, since
4335f1376d7SMike Pritchard.Dv MIN
434afe61c15SRodney W. Grimes= 0,
4355f1376d7SMike Pritchard.Dv TIME
436afe61c15SRodney W. Grimesno longer represents an inter-byte
437afe61c15SRodney W. Grimestimer.  It now serves as a read timer that is activated as soon as the
438afe61c15SRodney W. Grimesread function is processed.  A read is satisfied as soon as a single
439afe61c15SRodney W. Grimesbyte is received or the read timer expires.  Note that in this case if
440afe61c15SRodney W. Grimesthe timer expires, no bytes are returned.  If the timer does not
441afe61c15SRodney W. Grimesexpire, the only way the read can be satisfied is if a byte is received.
442afe61c15SRodney W. GrimesIn this case the read will not block indefinitely waiting for a byte; if
443afe61c15SRodney W. Grimesno byte is received within
4445f1376d7SMike Pritchard.Dv TIME Ns *0.1
445afe61c15SRodney W. Grimesseconds after the read is initiated,
446afe61c15SRodney W. Grimesthe read returns a value of zero, having read no data.  If data is
447afe61c15SRodney W. Grimesin the buffer at the time of the read, the timer is started as if
448afe61c15SRodney W. Grimesdata had been received immediately after the read.
4495f1376d7SMike Pritchard.Ss Case D: MIN = 0, TIME = 0
450afe61c15SRodney W. GrimesThe minimum of either the number of bytes requested or the number of
451afe61c15SRodney W. Grimesbytes currently available is returned without waiting for more
452afe61c15SRodney W. Grimesbytes to be input.  If no characters are available, read returns a
453afe61c15SRodney W. Grimesvalue of zero, having read no data.
454afe61c15SRodney W. Grimes.Ss Writing Data and Output Processing
455afe61c15SRodney W. GrimesWhen a process writes one or more bytes to a terminal device file, they
456afe61c15SRodney W. Grimesare processed according to the
457afe61c15SRodney W. Grimes.Fa c_oflag
458afe61c15SRodney W. Grimesfield (see the
459afe61c15SRodney W. Grimes.Sx "Output Modes
460afe61c15SRodney W. Grimessection).  The
461afe61c15SRodney W. Grimesimplementation may provide a buffering mechanism; as such, when a call to
462edf0e5b3SMike Pritchard.Fn write
463edf0e5b3SMike Pritchardcompletes, all of the bytes written have been scheduled for
464afe61c15SRodney W. Grimestransmission to the device, but the transmission will not necessarily
465afe61c15SRodney W. Grimeshave been completed.
466afe61c15SRodney W. Grimes.\" See also .Sx "6.4.2" for the effects of
467afe61c15SRodney W. Grimes.\" .Dv O_NONBLOCK
468afe61c15SRodney W. Grimes.\" on write.
469afe61c15SRodney W. Grimes.Ss Special Characters
470afe61c15SRodney W. GrimesCertain characters have special functions on input or output or both.
471afe61c15SRodney W. GrimesThese functions are summarized as follows:
472afe61c15SRodney W. Grimes.Bl -tag -width indent
473afe61c15SRodney W. Grimes.It Dv INTR
474afe61c15SRodney W. GrimesSpecial character on input and is recognized if the
475afe61c15SRodney W. Grimes.Dv ISIG
476afe61c15SRodney W. Grimesflag (see the
477afe61c15SRodney W. Grimes.Sx "Local Modes"
478afe61c15SRodney W. Grimessection) is enabled.  Generates a
479afe61c15SRodney W. Grimes.Dv SIGINT
480afe61c15SRodney W. Grimessignal which is sent to all processes in the foreground
481afe61c15SRodney W. Grimesprocess group for which the terminal is the controlling
482afe61c15SRodney W. Grimesterminal.  If
483afe61c15SRodney W. Grimes.Dv ISIG
484afe61c15SRodney W. Grimesis set, the
485afe61c15SRodney W. Grimes.Dv INTR
486afe61c15SRodney W. Grimescharacter is
487afe61c15SRodney W. Grimesdiscarded when processed.
488afe61c15SRodney W. Grimes.It Dv QUIT
489afe61c15SRodney W. GrimesSpecial character on input and is recognized if the
490afe61c15SRodney W. Grimes.Dv ISIG
491afe61c15SRodney W. Grimesflag is enabled.  Generates a
492afe61c15SRodney W. Grimes.Dv SIGQUIT
493afe61c15SRodney W. Grimessignal which is
494afe61c15SRodney W. Grimessent to all processes in the foreground process group
495afe61c15SRodney W. Grimesfor which the terminal is the controlling terminal.  If
496afe61c15SRodney W. Grimes.Dv ISIG
497afe61c15SRodney W. Grimesis set, the
498afe61c15SRodney W. Grimes.Dv QUIT
499afe61c15SRodney W. Grimescharacter is discarded when
500afe61c15SRodney W. Grimesprocessed.
501afe61c15SRodney W. Grimes.It Dv ERASE
502afe61c15SRodney W. GrimesSpecial character on input and is recognized if the
503afe61c15SRodney W. Grimes.Dv ICANON
504afe61c15SRodney W. Grimesflag is set.  Erases the last character in the
505afe61c15SRodney W. Grimescurrent line; see
506afe61c15SRodney W. Grimes.Sx "Canonical Mode Input Processing" .
507afe61c15SRodney W. GrimesIt does not erase beyond
508afe61c15SRodney W. Grimesthe start of a line, as delimited by an
509afe61c15SRodney W. Grimes.Dv NL ,
510afe61c15SRodney W. Grimes.Dv EOF ,
511afe61c15SRodney W. Grimesor
512afe61c15SRodney W. Grimes.Dv EOL
513afe61c15SRodney W. Grimescharacter.  If
514afe61c15SRodney W. Grimes.Dv ICANON
515afe61c15SRodney W. Grimesis set, the
516afe61c15SRodney W. Grimes.Dv ERASE
517afe61c15SRodney W. Grimescharacter is
518afe61c15SRodney W. Grimesdiscarded when processed.
519afe61c15SRodney W. Grimes.It Dv KILL
520afe61c15SRodney W. GrimesSpecial character on input and is recognized if the
521afe61c15SRodney W. Grimes.Dv ICANON
522afe61c15SRodney W. Grimesflag is set.  Deletes the entire line, as
523afe61c15SRodney W. Grimesdelimited by a
524afe61c15SRodney W. Grimes.Dv NL ,
525afe61c15SRodney W. Grimes.Dv EOF ,
526afe61c15SRodney W. Grimesor
527afe61c15SRodney W. Grimes.Dv EOL
528afe61c15SRodney W. Grimescharacter.  If
529afe61c15SRodney W. Grimes.Dv ICANON
530afe61c15SRodney W. Grimesis set, the
531afe61c15SRodney W. Grimes.Dv KILL
532afe61c15SRodney W. Grimescharacter is discarded when processed.
533afe61c15SRodney W. Grimes.It Dv EOF
534afe61c15SRodney W. GrimesSpecial character on input and is recognized if the
535afe61c15SRodney W. Grimes.Dv ICANON
536afe61c15SRodney W. Grimesflag is set.  When received, all the bytes
537afe61c15SRodney W. Grimeswaiting to be read are immediately passed to the
538afe61c15SRodney W. Grimesprocess, without waiting for a newline, and the
539afe61c15SRodney W. Grimes.Dv EOF
540afe61c15SRodney W. Grimesis discarded.  Thus, if there are no bytes waiting (that
541afe61c15SRodney W. Grimesis, the
542afe61c15SRodney W. Grimes.Dv EOF
543afe61c15SRodney W. Grimesoccurred at the beginning of a line), a byte
544edf0e5b3SMike Pritchardcount of zero is returned from the
545edf0e5b3SMike Pritchard.Fn read ,
546afe61c15SRodney W. Grimesrepresenting an end-of-file indication.  If
547afe61c15SRodney W. Grimes.Dv ICANON
548afe61c15SRodney W. Grimesis
549afe61c15SRodney W. Grimesset, the
550afe61c15SRodney W. Grimes.Dv EOF
551afe61c15SRodney W. Grimescharacter is discarded when processed.
552081cb6b3SMark Ovens.It Dv NL
553afe61c15SRodney W. GrimesSpecial character on input and is recognized if the
554afe61c15SRodney W. Grimes.Dv ICANON
555afe61c15SRodney W. Grimesflag is set.  It is the line delimiter
556afe61c15SRodney W. Grimes.Ql \&\en .
557afe61c15SRodney W. Grimes.It Dv EOL
558afe61c15SRodney W. GrimesSpecial character on input and is recognized if the
559afe61c15SRodney W. Grimes.Dv ICANON
560afe61c15SRodney W. Grimesflag is set.  Is an additional line delimiter,
561afe61c15SRodney W. Grimeslike
562afe61c15SRodney W. Grimes.Dv NL .
563afe61c15SRodney W. Grimes.It Dv SUSP
564afe61c15SRodney W. GrimesIf the
565afe61c15SRodney W. Grimes.Dv ISIG
566afe61c15SRodney W. Grimesflag is enabled, receipt of the
567afe61c15SRodney W. Grimes.Dv SUSP
568afe61c15SRodney W. Grimescharacter causes a
569afe61c15SRodney W. Grimes.Dv SIGTSTP
570afe61c15SRodney W. Grimessignal to be sent to all processes in the
571afe61c15SRodney W. Grimesforeground process group for which the terminal is the
572afe61c15SRodney W. Grimescontrolling terminal, and the
573afe61c15SRodney W. Grimes.Dv SUSP
574afe61c15SRodney W. Grimescharacter is
575afe61c15SRodney W. Grimesdiscarded when processed.
576afe61c15SRodney W. Grimes.It Dv STOP
577afe61c15SRodney W. GrimesSpecial character on both input and output and is
578afe61c15SRodney W. Grimesrecognized if the
579afe61c15SRodney W. Grimes.Dv IXON
580afe61c15SRodney W. Grimes(output control) or
581afe61c15SRodney W. Grimes.Dv IXOFF
582afe61c15SRodney W. Grimes(input
583afe61c15SRodney W. Grimescontrol) flag is set.  Can be used to temporarily
584afe61c15SRodney W. Grimessuspend output.  It is useful with fast terminals to
585afe61c15SRodney W. Grimesprevent output from disappearing before it can be read.
586afe61c15SRodney W. GrimesIf
587afe61c15SRodney W. Grimes.Dv IXON
588afe61c15SRodney W. Grimesis set, the
589afe61c15SRodney W. Grimes.Dv STOP
590afe61c15SRodney W. Grimescharacter is discarded when
591afe61c15SRodney W. Grimesprocessed.
592afe61c15SRodney W. Grimes.It Dv START
593afe61c15SRodney W. GrimesSpecial character on both input and output and is
594afe61c15SRodney W. Grimesrecognized if the
595afe61c15SRodney W. Grimes.Dv IXON
596afe61c15SRodney W. Grimes(output control) or
597afe61c15SRodney W. Grimes.Dv IXOFF
598afe61c15SRodney W. Grimes(input
599afe61c15SRodney W. Grimescontrol) flag is set.  Can be used to resume output that
600afe61c15SRodney W. Grimeshas been suspended by a
601afe61c15SRodney W. Grimes.Dv STOP
602afe61c15SRodney W. Grimescharacter.  If
603afe61c15SRodney W. Grimes.Dv IXON
604afe61c15SRodney W. Grimesis set, the
605afe61c15SRodney W. Grimes.Dv START
606afe61c15SRodney W. Grimescharacter is discarded when processed.
607081cb6b3SMark Ovens.It Dv CR
608afe61c15SRodney W. GrimesSpecial character on input and is recognized if the
609afe61c15SRodney W. Grimes.Dv ICANON
610afe61c15SRodney W. Grimesflag is set; it is the
611afe61c15SRodney W. Grimes.Ql \&\er ,
612afe61c15SRodney W. Grimesas denoted in the
613afe61c15SRodney W. Grimes.Tn \&C
614afe61c15SRodney W. GrimesStandard {2}.  When
615afe61c15SRodney W. Grimes.Dv ICANON
616afe61c15SRodney W. Grimesand
617afe61c15SRodney W. Grimes.Dv ICRNL
618afe61c15SRodney W. Grimesare set and
619afe61c15SRodney W. Grimes.Dv IGNCR
620afe61c15SRodney W. Grimesis not set, this character is translated into a
621afe61c15SRodney W. Grimes.Dv NL ,
622afe61c15SRodney W. Grimesand
623afe61c15SRodney W. Grimeshas the same effect as a
624afe61c15SRodney W. Grimes.Dv NL
625afe61c15SRodney W. Grimescharacter.
626afe61c15SRodney W. Grimes.El
627afe61c15SRodney W. Grimes.Pp
628afe61c15SRodney W. GrimesThe following special characters are extensions defined by this
629c3939fb3SRuslan Ermilovsystem and are not a part of
630c3939fb3SRuslan Ermilov.St -p1003.1
631c3939fb3SRuslan Ermilovtermios.
632afe61c15SRodney W. Grimes.Bl -tag -width indent
633afe61c15SRodney W. Grimes.It Dv EOL2
634afe61c15SRodney W. GrimesSecondary
635afe61c15SRodney W. Grimes.Dv EOL
636afe61c15SRodney W. Grimescharacter.  Same function as
637afe61c15SRodney W. Grimes.Dv EOL .
638afe61c15SRodney W. Grimes.It Dv WERASE
639afe61c15SRodney W. GrimesSpecial character on input and is recognized if the
640afe61c15SRodney W. Grimes.Dv ICANON
641afe61c15SRodney W. Grimesflag is set.  Erases the last word in the current
642afe61c15SRodney W. Grimesline according to one of two algorithms.  If the
643afe61c15SRodney W. Grimes.Dv ALTWERASE
644afe61c15SRodney W. Grimesflag is not set, first any preceding whitespace is
645afe61c15SRodney W. Grimeserased, and then the maximal sequence of non-whitespace
646afe61c15SRodney W. Grimescharacters.  If
647afe61c15SRodney W. Grimes.Dv ALTWERASE
648afe61c15SRodney W. Grimesis set, first any preceding
649afe61c15SRodney W. Grimeswhitespace is erased, and then the maximal sequence
650afe61c15SRodney W. Grimesof alphabetic/underscores or non alphabetic/underscores.
651afe61c15SRodney W. GrimesAs a special case in this second algorithm, the first previous
652afe61c15SRodney W. Grimesnon-whitespace character is skipped in determining
653afe61c15SRodney W. Grimeswhether the preceding word is a sequence of
65468bf8f9eSJoseph Koshyalphabetic/underscores.  This sounds confusing but turns
655afe61c15SRodney W. Grimesout to be quite practical.
656afe61c15SRodney W. Grimes.It Dv REPRINT
657afe61c15SRodney W. GrimesSpecial character on input and is recognized if the
658afe61c15SRodney W. Grimes.Dv ICANON
659afe61c15SRodney W. Grimesflag is set.  Causes the current input edit line
660afe61c15SRodney W. Grimesto be retyped.
661afe61c15SRodney W. Grimes.It Dv DSUSP
662afe61c15SRodney W. GrimesHas similar actions to the
663afe61c15SRodney W. Grimes.Dv SUSP
664afe61c15SRodney W. Grimescharacter, except that
665afe61c15SRodney W. Grimesthe
666afe61c15SRodney W. Grimes.Dv SIGTSTP
667afe61c15SRodney W. Grimessignal is delivered when one of the processes
668edf0e5b3SMike Pritchardin the foreground process group issues a
669edf0e5b3SMike Pritchard.Fn read
670edf0e5b3SMike Pritchardto the
671afe61c15SRodney W. Grimescontrolling terminal.
672afe61c15SRodney W. Grimes.It Dv LNEXT
673afe61c15SRodney W. GrimesSpecial character on input and is recognized if the
674afe61c15SRodney W. Grimes.Dv IEXTEN
675afe61c15SRodney W. Grimesflag is set.  Receipt of this character causes the next
676afe61c15SRodney W. Grimescharacter to be taken literally.
677afe61c15SRodney W. Grimes.It Dv DISCARD
678afe61c15SRodney W. GrimesSpecial character on input and is recognized if the
679afe61c15SRodney W. Grimes.Dv IEXTEN
680afe61c15SRodney W. Grimesflag is set.  Receipt of this character toggles the flushing
681afe61c15SRodney W. Grimesof terminal output.
682afe61c15SRodney W. Grimes.It Dv STATUS
683afe61c15SRodney W. GrimesSpecial character on input and is recognized if the
684afe61c15SRodney W. Grimes.Dv ICANON
685afe61c15SRodney W. Grimesflag is set.  Receipt of this character causes a
686afe61c15SRodney W. Grimes.Dv SIGINFO
687afe61c15SRodney W. Grimessignal to be sent to the foreground process group of the
688afe61c15SRodney W. Grimesterminal.  Also, if the
689afe61c15SRodney W. Grimes.Dv NOKERNINFO
690afe61c15SRodney W. Grimesflag is not set, it
691afe61c15SRodney W. Grimescauses the kernel to write a status message to the terminal
692afe61c15SRodney W. Grimesthat displays the current load average, the name of the
693afe61c15SRodney W. Grimescommand in the foreground, its process ID, the symbolic
694afe61c15SRodney W. Grimeswait channel, the number of user and system seconds used,
695afe61c15SRodney W. Grimesthe percentage of cpu the process is getting, and the resident
696afe61c15SRodney W. Grimesset size of the process.
697afe61c15SRodney W. Grimes.El
698afe61c15SRodney W. Grimes.Pp
699afe61c15SRodney W. GrimesThe
700afe61c15SRodney W. Grimes.Dv NL
701afe61c15SRodney W. Grimesand
702afe61c15SRodney W. Grimes.Dv CR
703afe61c15SRodney W. Grimescharacters cannot be changed.
704afe61c15SRodney W. GrimesThe values for all the remaining characters can be set and are
705afe61c15SRodney W. Grimesdescribed later in the document under
706afe61c15SRodney W. GrimesSpecial Control Characters.
707afe61c15SRodney W. Grimes.Pp
708afe61c15SRodney W. GrimesSpecial
709afe61c15SRodney W. Grimescharacter functions associated with changeable special control characters
710afe61c15SRodney W. Grimescan be disabled individually by setting their value to
711afe61c15SRodney W. Grimes.Dv {_POSIX_VDISABLE} ;
712afe61c15SRodney W. Grimessee
713afe61c15SRodney W. Grimes.Sx "Special Control Characters" .
714afe61c15SRodney W. Grimes.Pp
715afe61c15SRodney W. GrimesIf two or more special characters have the same value, the function
716afe61c15SRodney W. Grimesperformed when that character is received is undefined.
717afe61c15SRodney W. Grimes.Ss Modem Disconnect
718afe61c15SRodney W. GrimesIf a modem disconnect is detected by the terminal interface for a
719afe61c15SRodney W. Grimescontrolling terminal, and if
720afe61c15SRodney W. Grimes.Dv CLOCAL
721afe61c15SRodney W. Grimesis not set in the
722afe61c15SRodney W. Grimes.Fa c_cflag
723afe61c15SRodney W. Grimesfield for
724afe61c15SRodney W. Grimesthe terminal, the
725afe61c15SRodney W. Grimes.Dv SIGHUP
726afe61c15SRodney W. Grimessignal is sent to the controlling
727afe61c15SRodney W. Grimesprocess associated with the terminal.  Unless other arrangements have
728afe61c15SRodney W. Grimesbeen made, this causes the controlling process to terminate.
729edf0e5b3SMike PritchardAny subsequent call to the
730edf0e5b3SMike Pritchard.Fn read
731edf0e5b3SMike Pritchardfunction returns the value zero,
732afe61c15SRodney W. Grimesindicating end of file.  Thus, processes that read a terminal
733afe61c15SRodney W. Grimesfile and test for end-of-file can terminate appropriately after a
734afe61c15SRodney W. Grimesdisconnect.
735afe61c15SRodney W. Grimes.\" If the
736afe61c15SRodney W. Grimes.\" .Er EIO
737afe61c15SRodney W. Grimes.\" condition specified in 6.1.1.4 that applies
738afe61c15SRodney W. Grimes.\" when the implementation supports job control also exists, it is
739afe61c15SRodney W. Grimes.\" unspecified whether the
740afe61c15SRodney W. Grimes.\" .Dv EOF
741afe61c15SRodney W. Grimes.\" condition or the
742afe61c15SRodney W. Grimes.\" .Pf [ Dv EIO
743afe61c15SRodney W. Grimes.\" ] is returned.
744afe61c15SRodney W. GrimesAny
745edf0e5b3SMike Pritchardsubsequent
746edf0e5b3SMike Pritchard.Fn write
747edf0e5b3SMike Pritchardto the terminal device returns -1, with
748afe61c15SRodney W. Grimes.Va errno
749afe61c15SRodney W. Grimesset to
750afe61c15SRodney W. Grimes.Er EIO ,
751afe61c15SRodney W. Grimesuntil the device is closed.
752afe61c15SRodney W. Grimes.Sh General Terminal Interface
753afe61c15SRodney W. Grimes.Ss Closing a Terminal Device File
754afe61c15SRodney W. GrimesThe last process to close a terminal device file causes any output
755afe61c15SRodney W. Grimesto be sent to the device and any input to be discarded.  Then, if
756afe61c15SRodney W. Grimes.Dv HUPCL
757afe61c15SRodney W. Grimesis set in the control modes, and the communications port supports a
758afe61c15SRodney W. Grimesdisconnect function, the terminal device performs a disconnect.
759afe61c15SRodney W. Grimes.Ss Parameters That Can Be Set
760afe61c15SRodney W. GrimesRoutines that need to control certain terminal
761afe61c15SRodney W. Grimes.Tn I/O
762afe61c15SRodney W. Grimescharacteristics
763afe61c15SRodney W. Grimesdo so by using the termios structure as defined in the header
764afe61c15SRodney W. Grimes.Aq Pa termios.h .
765afe61c15SRodney W. GrimesThis structure contains minimally four scalar elements of bit flags
766afe61c15SRodney W. Grimesand one array of special characters.  The scalar flag elements are
767afe61c15SRodney W. Grimesnamed:
768afe61c15SRodney W. Grimes.Fa c_iflag ,
769afe61c15SRodney W. Grimes.Fa c_oflag ,
770afe61c15SRodney W. Grimes.Fa c_cflag ,
771afe61c15SRodney W. Grimesand
772afe61c15SRodney W. Grimes.Fa c_lflag .
773afe61c15SRodney W. GrimesThe character array is named
774afe61c15SRodney W. Grimes.Fa c_cc ,
775afe61c15SRodney W. Grimesand its maximum index is
776afe61c15SRodney W. Grimes.Dv NCCS .
777afe61c15SRodney W. Grimes.Ss Input Modes
778afe61c15SRodney W. GrimesValues of the
779afe61c15SRodney W. Grimes.Fa c_iflag
780afe61c15SRodney W. Grimesfield describe the basic
781afe61c15SRodney W. Grimesterminal input control, and are composed of
782afe61c15SRodney W. Grimesfollowing masks:
783afe61c15SRodney W. Grimes.Pp
784afe61c15SRodney W. Grimes.Bl -tag -width IMAXBEL -offset indent -compact
785afe61c15SRodney W. Grimes.It Dv IGNBRK
786afe61c15SRodney W. Grimes/* ignore BREAK condition */
787afe61c15SRodney W. Grimes.It Dv BRKINT
788afe61c15SRodney W. Grimes/* map BREAK to SIGINTR */
789afe61c15SRodney W. Grimes.It Dv IGNPAR
790afe61c15SRodney W. Grimes/* ignore (discard) parity errors */
791afe61c15SRodney W. Grimes.It Dv PARMRK
792afe61c15SRodney W. Grimes/* mark parity and framing errors */
793afe61c15SRodney W. Grimes.It Dv INPCK
794afe61c15SRodney W. Grimes/* enable checking of parity errors */
795afe61c15SRodney W. Grimes.It Dv ISTRIP
796afe61c15SRodney W. Grimes/* strip 8th bit off chars */
797afe61c15SRodney W. Grimes.It Dv INLCR
798afe61c15SRodney W. Grimes/* map NL into CR */
799afe61c15SRodney W. Grimes.It Dv IGNCR
800afe61c15SRodney W. Grimes/* ignore CR */
801afe61c15SRodney W. Grimes.It Dv ICRNL
802afe61c15SRodney W. Grimes/* map CR to NL (ala CRMOD) */
803afe61c15SRodney W. Grimes.It Dv IXON
804afe61c15SRodney W. Grimes/* enable output flow control */
805afe61c15SRodney W. Grimes.It Dv IXOFF
806afe61c15SRodney W. Grimes/* enable input flow control */
807afe61c15SRodney W. Grimes.It Dv IXANY
808afe61c15SRodney W. Grimes/* any char will restart after stop */
809afe61c15SRodney W. Grimes.It Dv IMAXBEL
810afe61c15SRodney W. Grimes/* ring bell on input queue full */
811afe61c15SRodney W. Grimes.El
812afe61c15SRodney W. Grimes.Pp
813afe61c15SRodney W. GrimesIn the context of asynchronous serial data transmission, a break
814afe61c15SRodney W. Grimescondition is defined as a sequence of zero-valued bits that continues for
815afe61c15SRodney W. Grimesmore than the time to send one byte.  The entire sequence of zero-valued
816afe61c15SRodney W. Grimesbits is interpreted as a single break condition, even if it continues for
817afe61c15SRodney W. Grimesa time equivalent to more than one byte.  In contexts other than
818afe61c15SRodney W. Grimesasynchronous serial data transmission the definition of a break condition
819afe61c15SRodney W. Grimesis implementation defined.
820afe61c15SRodney W. Grimes.Pp
821afe61c15SRodney W. GrimesIf
822afe61c15SRodney W. Grimes.Dv IGNBRK
823afe61c15SRodney W. Grimesis set, a break condition detected on input is ignored, that
824afe61c15SRodney W. Grimesis, not put on the input queue and therefore not read by any process.  If
825afe61c15SRodney W. Grimes.Dv IGNBRK
826afe61c15SRodney W. Grimesis not set and
827afe61c15SRodney W. Grimes.Dv BRKINT
828afe61c15SRodney W. Grimesis set, the break condition flushes the
829afe61c15SRodney W. Grimesinput and output queues and if the terminal is the controlling terminal
830afe61c15SRodney W. Grimesof a foreground process group, the break condition generates a
831afe61c15SRodney W. Grimessingle
832afe61c15SRodney W. Grimes.Dv SIGINT
833afe61c15SRodney W. Grimessignal to that foreground process group.  If neither
834afe61c15SRodney W. Grimes.Dv IGNBRK
835afe61c15SRodney W. Grimesnor
836afe61c15SRodney W. Grimes.Dv BRKINT
837afe61c15SRodney W. Grimesis set, a break condition is read as a single
838afe61c15SRodney W. Grimes.Ql \&\e0 ,
839afe61c15SRodney W. Grimesor if
840afe61c15SRodney W. Grimes.Dv PARMRK
841afe61c15SRodney W. Grimesis set, as
842afe61c15SRodney W. Grimes.Ql \&\e377 ,
843afe61c15SRodney W. Grimes.Ql \&\e0 ,
844afe61c15SRodney W. Grimes.Ql \&\e0 .
845afe61c15SRodney W. Grimes.Pp
846afe61c15SRodney W. GrimesIf
847afe61c15SRodney W. Grimes.Dv IGNPAR
848afe61c15SRodney W. Grimesis set, a byte with a framing or parity error (other than
849afe61c15SRodney W. Grimesbreak) is ignored.
850afe61c15SRodney W. Grimes.Pp
851afe61c15SRodney W. GrimesIf
852afe61c15SRodney W. Grimes.Dv PARMRK
853afe61c15SRodney W. Grimesis set, and
854afe61c15SRodney W. Grimes.Dv IGNPAR
855afe61c15SRodney W. Grimesis not set, a byte with a framing or parity
856afe61c15SRodney W. Grimeserror (other than break) is given to the application as the
857afe61c15SRodney W. Grimesthree-character sequence
858afe61c15SRodney W. Grimes.Ql \&\e377 ,
859afe61c15SRodney W. Grimes.Ql \&\e0 ,
860afe61c15SRodney W. GrimesX, where
861afe61c15SRodney W. Grimes.Ql \&\e377 ,
862afe61c15SRodney W. Grimes.Ql \&\e0
863afe61c15SRodney W. Grimesis a two-character
864afe61c15SRodney W. Grimesflag preceding each sequence and X is the data of the character received
865afe61c15SRodney W. Grimesin error.  To avoid ambiguity in this case, if
866afe61c15SRodney W. Grimes.Dv ISTRIP
867afe61c15SRodney W. Grimesis not set, a valid
868afe61c15SRodney W. Grimescharacter of
869afe61c15SRodney W. Grimes.Ql \&\e377
870afe61c15SRodney W. Grimesis given to the application as
871afe61c15SRodney W. Grimes.Ql \&\e377 ,
872afe61c15SRodney W. Grimes.Ql \&\e377 .
873afe61c15SRodney W. GrimesIf
874afe61c15SRodney W. Grimesneither
875afe61c15SRodney W. Grimes.Dv PARMRK
876afe61c15SRodney W. Grimesnor
877afe61c15SRodney W. Grimes.Dv IGNPAR
878afe61c15SRodney W. Grimesis set, a framing or parity error (other than
879afe61c15SRodney W. Grimesbreak) is given to the application as a single character
880afe61c15SRodney W. Grimes.Ql \&\e0 .
881afe61c15SRodney W. Grimes.Pp
882afe61c15SRodney W. GrimesIf
883afe61c15SRodney W. Grimes.Dv INPCK
884afe61c15SRodney W. Grimesis set, input parity checking is enabled.  If
885afe61c15SRodney W. Grimes.Dv INPCK
886afe61c15SRodney W. Grimesis not set,
887afe61c15SRodney W. Grimesinput parity checking is disabled, allowing output parity generation
888afe61c15SRodney W. Grimeswithout input parity errors.  Note that whether input parity checking is
889afe61c15SRodney W. Grimesenabled or disabled is independent of whether parity detection is enabled
890afe61c15SRodney W. Grimesor disabled (see
891afe61c15SRodney W. Grimes.Sx "Control Modes" ) .
892afe61c15SRodney W. GrimesIf parity detection is enabled but input
893afe61c15SRodney W. Grimesparity checking is disabled, the hardware to which the terminal is
894afe61c15SRodney W. Grimesconnected recognizes the parity bit, but the terminal special file
895afe61c15SRodney W. Grimesdoes not check whether this bit is set correctly or not.
896afe61c15SRodney W. Grimes.Pp
897afe61c15SRodney W. GrimesIf
898afe61c15SRodney W. Grimes.Dv ISTRIP
899afe61c15SRodney W. Grimesis set, valid input bytes are first stripped to seven bits,
900afe61c15SRodney W. Grimesotherwise all eight bits are processed.
901afe61c15SRodney W. Grimes.Pp
902afe61c15SRodney W. GrimesIf
903afe61c15SRodney W. Grimes.Dv INLCR
904afe61c15SRodney W. Grimesis set, a received
905afe61c15SRodney W. Grimes.Dv NL
906afe61c15SRodney W. Grimescharacter is translated into a
907afe61c15SRodney W. Grimes.Dv CR
908afe61c15SRodney W. Grimescharacter.  If
909afe61c15SRodney W. Grimes.Dv IGNCR
910afe61c15SRodney W. Grimesis set, a received
911afe61c15SRodney W. Grimes.Dv CR
912afe61c15SRodney W. Grimescharacter is ignored (not
913afe61c15SRodney W. Grimesread).  If
914afe61c15SRodney W. Grimes.Dv IGNCR
915afe61c15SRodney W. Grimesis not set and
916afe61c15SRodney W. Grimes.Dv ICRNL
917afe61c15SRodney W. Grimesis set, a received
918afe61c15SRodney W. Grimes.Dv CR
919afe61c15SRodney W. Grimescharacter is
920afe61c15SRodney W. Grimestranslated into a
921afe61c15SRodney W. Grimes.Dv NL
922afe61c15SRodney W. Grimescharacter.
923afe61c15SRodney W. Grimes.Pp
924afe61c15SRodney W. GrimesIf
925afe61c15SRodney W. Grimes.Dv IXON
926afe61c15SRodney W. Grimesis set, start/stop output control is enabled.  A received
927afe61c15SRodney W. Grimes.Dv STOP
928afe61c15SRodney W. Grimescharacter suspends output and a received
929afe61c15SRodney W. Grimes.Dv START
930afe61c15SRodney W. Grimescharacter
9316d249eeeSSheldon Hearnrestarts output.
9326d249eeeSSheldon HearnIf
933afe61c15SRodney W. Grimes.Dv IXANY
934afe61c15SRodney W. Grimesis also set, then any character may
9356d249eeeSSheldon Hearnrestart output.
9366d249eeeSSheldon HearnWhen
937afe61c15SRodney W. Grimes.Dv IXON
938afe61c15SRodney W. Grimesis set,
939afe61c15SRodney W. Grimes.Dv START
940afe61c15SRodney W. Grimesand
941afe61c15SRodney W. Grimes.Dv STOP
942afe61c15SRodney W. Grimescharacters are not
943afe61c15SRodney W. Grimesread, but merely perform flow control functions.  When
944afe61c15SRodney W. Grimes.Dv IXON
945afe61c15SRodney W. Grimesis not set,
946afe61c15SRodney W. Grimesthe
947afe61c15SRodney W. Grimes.Dv START
948afe61c15SRodney W. Grimesand
949afe61c15SRodney W. Grimes.Dv STOP
950afe61c15SRodney W. Grimescharacters are read.
951afe61c15SRodney W. Grimes.Pp
952afe61c15SRodney W. GrimesIf
953afe61c15SRodney W. Grimes.Dv IXOFF
954afe61c15SRodney W. Grimesis set, start/stop input control is enabled.  The system shall
955afe61c15SRodney W. Grimestransmit one or more
956afe61c15SRodney W. Grimes.Dv STOP
957afe61c15SRodney W. Grimescharacters, which are intended to cause the
958afe61c15SRodney W. Grimesterminal device to stop transmitting data, as needed to prevent the input
959afe61c15SRodney W. Grimesqueue from overflowing and causing the undefined behavior described in
960afe61c15SRodney W. Grimes.Sx "Input Processing and Reading Data" ,
961afe61c15SRodney W. Grimesand shall transmit one or more
962afe61c15SRodney W. Grimes.Dv START
963afe61c15SRodney W. Grimescharacters, which are
964afe61c15SRodney W. Grimesintended to cause the terminal device to resume transmitting data, as
965afe61c15SRodney W. Grimessoon as the device can continue transmitting data without risk of
966afe61c15SRodney W. Grimesoverflowing the input queue.  The precise conditions under which
967afe61c15SRodney W. Grimes.Dv STOP
968afe61c15SRodney W. Grimesand
969afe61c15SRodney W. GrimesSTART
970afe61c15SRodney W. Grimescharacters are transmitted are implementation defined.
971afe61c15SRodney W. Grimes.Pp
972afe61c15SRodney W. GrimesIf
973afe61c15SRodney W. Grimes.Dv IMAXBEL
974afe61c15SRodney W. Grimesis set and the input queue is full, subsequent input shall cause an
975afe61c15SRodney W. Grimes.Tn ASCII
976afe61c15SRodney W. Grimes.Dv BEL
97743d1df33SAlexander Langercharacter to be transmitted to
978afe61c15SRodney W. Grimesthe output queue.
979afe61c15SRodney W. Grimes.Pp
980edf0e5b3SMike PritchardThe initial input control value after
981edf0e5b3SMike Pritchard.Fn open
982edf0e5b3SMike Pritchardis implementation defined.
983afe61c15SRodney W. Grimes.Ss Output Modes
984afe61c15SRodney W. GrimesValues of the
985afe61c15SRodney W. Grimes.Fa c_oflag
986afe61c15SRodney W. Grimesfield describe the basic terminal output control,
987afe61c15SRodney W. Grimesand are composed of the following masks:
988afe61c15SRodney W. Grimes.Pp
989afe61c15SRodney W. Grimes.Bl -tag -width OXTABS -offset indent -compact
990afe61c15SRodney W. Grimes.It Dv OPOST
991afe61c15SRodney W. Grimes/* enable following output processing */
992afe61c15SRodney W. Grimes.It Dv ONLCR
993afe61c15SRodney W. Grimes/* map NL to CR-NL (ala
994afe61c15SRodney W. Grimes.Dv CRMOD )
995afe61c15SRodney W. Grimes*/
9963617ddfcSAssar Westerlund.It Dv OCRNL
9973617ddfcSAssar Westerlund/* map CR to NL */
998afe61c15SRodney W. Grimes.It Dv OXTABS
999afe61c15SRodney W. Grimes/* expand tabs to spaces */
1000afe61c15SRodney W. Grimes.It Dv ONOEOT
1001afe61c15SRodney W. Grimes/* discard
1002afe61c15SRodney W. Grimes.Dv EOT Ns 's
1003afe61c15SRodney W. Grimes.Ql \&^D
1004afe61c15SRodney W. Grimeson output) */
10053617ddfcSAssar Westerlund.It Dv ONOCR
10063617ddfcSAssar Westerlund/* do not transmit CRs on column 0 */
10073617ddfcSAssar Westerlund.It Dv ONLRET
10083617ddfcSAssar Westerlund/* on the termianl NL performs the CR function */
1009afe61c15SRodney W. Grimes.El
1010afe61c15SRodney W. Grimes.Pp
1011afe61c15SRodney W. GrimesIf
1012afe61c15SRodney W. Grimes.Dv OPOST
1013afe61c15SRodney W. Grimesis set, the remaining flag masks are interpreted as follows;
1014afe61c15SRodney W. Grimesotherwise characters are transmitted without change.
1015afe61c15SRodney W. Grimes.Pp
1016afe61c15SRodney W. GrimesIf
1017afe61c15SRodney W. Grimes.Dv ONLCR
1018afe61c15SRodney W. Grimesis set, newlines are translated to carriage return, linefeeds.
1019afe61c15SRodney W. Grimes.Pp
1020afe61c15SRodney W. GrimesIf
10213617ddfcSAssar Westerlund.Dv OCRNL
10223617ddfcSAssar Westerlundis set, carriage returns are translated to newlines.
10233617ddfcSAssar Westerlund.Pp
10243617ddfcSAssar WesterlundIf
1025afe61c15SRodney W. Grimes.Dv OXTABS
1026afe61c15SRodney W. Grimesis set, tabs are expanded to the appropriate number of
1027afe61c15SRodney W. Grimesspaces (assuming 8 column tab stops).
1028afe61c15SRodney W. Grimes.Pp
1029afe61c15SRodney W. GrimesIf
1030afe61c15SRodney W. Grimes.Dv ONOEOT
1031afe61c15SRodney W. Grimesis set,
1032afe61c15SRodney W. Grimes.Tn ASCII
103368161b6bSRuslan Ermilov.Dv EOT Ns 's
1034afe61c15SRodney W. Grimesare discarded on output.
10353617ddfcSAssar Westerlund.Pp
10363617ddfcSAssar WesterlundIf
10373617ddfcSAssar Westerlund.Dv ONOCR
10383617ddfcSAssar Westerlundis set, no CR character is transmitted when at column 0 (first position).
10393617ddfcSAssar Westerlund.Pp
10403617ddfcSAssar WesterlundIf
10413617ddfcSAssar Westerlund.Dv ONLRET
10423617ddfcSAssar Westerlundis set, the NL character is assumed to do the carriage-return function;
10433617ddfcSAssar Westerlundthe column pointer will be set to 0.
1044afe61c15SRodney W. Grimes.Ss Control Modes
1045afe61c15SRodney W. GrimesValues of the
1046afe61c15SRodney W. Grimes.Fa c_cflag
1047afe61c15SRodney W. Grimesfield describe the basic
1048afe61c15SRodney W. Grimesterminal hardware control, and are composed of the
1049afe61c15SRodney W. Grimesfollowing masks.
1050afe61c15SRodney W. GrimesNot all values
1051afe61c15SRodney W. Grimesspecified are supported by all hardware.
1052afe61c15SRodney W. Grimes.Pp
1053afe61c15SRodney W. Grimes.Bl -tag -width CRTSXIFLOW -offset indent -compact
1054afe61c15SRodney W. Grimes.It Dv CSIZE
1055afe61c15SRodney W. Grimes/* character size mask */
1056afe61c15SRodney W. Grimes.It Dv CS5
1057afe61c15SRodney W. Grimes/* 5 bits (pseudo) */
1058afe61c15SRodney W. Grimes.It Dv CS6
1059afe61c15SRodney W. Grimes/* 6 bits */
1060afe61c15SRodney W. Grimes.It Dv CS7
1061afe61c15SRodney W. Grimes/* 7 bits */
1062afe61c15SRodney W. Grimes.It Dv CS8
1063afe61c15SRodney W. Grimes/* 8 bits */
1064afe61c15SRodney W. Grimes.It Dv CSTOPB
1065afe61c15SRodney W. Grimes/* send 2 stop bits */
1066afe61c15SRodney W. Grimes.It Dv CREAD
1067afe61c15SRodney W. Grimes/* enable receiver */
1068afe61c15SRodney W. Grimes.It Dv PARENB
1069afe61c15SRodney W. Grimes/* parity enable */
1070afe61c15SRodney W. Grimes.It Dv PARODD
1071afe61c15SRodney W. Grimes/* odd parity, else even */
1072afe61c15SRodney W. Grimes.It Dv HUPCL
1073afe61c15SRodney W. Grimes/* hang up on last close */
1074afe61c15SRodney W. Grimes.It Dv CLOCAL
1075afe61c15SRodney W. Grimes/* ignore modem status lines */
1076afe61c15SRodney W. Grimes.It Dv CCTS_OFLOW
1077afe61c15SRodney W. Grimes/*
1078afe61c15SRodney W. Grimes.Dv CTS
1079afe61c15SRodney W. Grimesflow control of output */
1080afe61c15SRodney W. Grimes.It Dv CRTSCTS
1081afe61c15SRodney W. Grimes/* same as
1082afe61c15SRodney W. Grimes.Dv CCTS_OFLOW
1083afe61c15SRodney W. Grimes*/
1084afe61c15SRodney W. Grimes.It Dv CRTS_IFLOW
1085afe61c15SRodney W. Grimes/* RTS flow control of input */
1086afe61c15SRodney W. Grimes.It Dv MDMBUF
1087afe61c15SRodney W. Grimes/* flow control output via Carrier */
1088afe61c15SRodney W. Grimes.El
1089afe61c15SRodney W. Grimes.Pp
1090afe61c15SRodney W. GrimesThe
1091afe61c15SRodney W. Grimes.Dv CSIZE
1092afe61c15SRodney W. Grimesbits specify the byte size in bits for both transmission and
1093afe61c15SRodney W. Grimesreception.  The
1094afe61c15SRodney W. Grimes.Fa c_cflag
1095afe61c15SRodney W. Grimesis masked with
1096afe61c15SRodney W. Grimes.Dv CSIZE
1097afe61c15SRodney W. Grimesand compared with the
1098afe61c15SRodney W. Grimesvalues
1099afe61c15SRodney W. Grimes.Dv CS5 ,
1100afe61c15SRodney W. Grimes.Dv CS6 ,
1101afe61c15SRodney W. Grimes.Dv CS7 ,
1102afe61c15SRodney W. Grimesor
1103afe61c15SRodney W. Grimes.Dv CS8 .
1104afe61c15SRodney W. GrimesThis size does not include the parity bit, if any.  If
1105afe61c15SRodney W. Grimes.Dv CSTOPB
1106afe61c15SRodney W. Grimesis set, two stop bits are used, otherwise one stop bit.  For example, at
1107afe61c15SRodney W. Grimes110 baud, two stop bits are normally used.
1108afe61c15SRodney W. Grimes.Pp
1109afe61c15SRodney W. GrimesIf
1110afe61c15SRodney W. Grimes.Dv CREAD
1111afe61c15SRodney W. Grimesis set, the receiver is enabled.  Otherwise, no character is
1112afe61c15SRodney W. Grimesreceived.
1113afe61c15SRodney W. GrimesNot all hardware supports this bit.  In fact, this flag
1114afe61c15SRodney W. Grimesis pretty silly and if it were not part of the
11154b66483fSRuslan Ermilov.Nm
1116afe61c15SRodney W. Grimesspecification
1117afe61c15SRodney W. Grimesit would be omitted.
1118afe61c15SRodney W. Grimes.Pp
1119afe61c15SRodney W. GrimesIf
1120afe61c15SRodney W. Grimes.Dv PARENB
1121afe61c15SRodney W. Grimesis set, parity generation and detection are enabled and a parity
1122afe61c15SRodney W. Grimesbit is added to each character.  If parity is enabled,
1123afe61c15SRodney W. Grimes.Dv PARODD
1124afe61c15SRodney W. Grimesspecifies
1125afe61c15SRodney W. Grimesodd parity if set, otherwise even parity is used.
1126afe61c15SRodney W. Grimes.Pp
1127afe61c15SRodney W. GrimesIf
1128afe61c15SRodney W. Grimes.Dv HUPCL
1129afe61c15SRodney W. Grimesis set, the modem control lines for the port are lowered
1130afe61c15SRodney W. Grimeswhen the last process with the port open closes the port or the process
1131afe61c15SRodney W. Grimesterminates.  The modem connection is broken.
1132afe61c15SRodney W. Grimes.Pp
1133afe61c15SRodney W. GrimesIf
1134afe61c15SRodney W. Grimes.Dv CLOCAL
1135afe61c15SRodney W. Grimesis set, a connection does not depend on the state of the modem
1136afe61c15SRodney W. Grimesstatus lines.  If
1137afe61c15SRodney W. Grimes.Dv CLOCAL
1138afe61c15SRodney W. Grimesis clear, the modem status lines are
1139afe61c15SRodney W. Grimesmonitored.
1140afe61c15SRodney W. Grimes.Pp
1141edf0e5b3SMike PritchardUnder normal circumstances, a call to the
1142edf0e5b3SMike Pritchard.Fn open
1143edf0e5b3SMike Pritchardfunction waits for
1144afe61c15SRodney W. Grimesthe modem connection to complete.  However, if the
1145afe61c15SRodney W. Grimes.Dv O_NONBLOCK
1146afe61c15SRodney W. Grimesflag is set
1147afe61c15SRodney W. Grimesor if
1148afe61c15SRodney W. Grimes.Dv CLOCAL
1149edf0e5b3SMike Pritchardhas been set, the
1150edf0e5b3SMike Pritchard.Fn open
1151edf0e5b3SMike Pritchardfunction returns
1152afe61c15SRodney W. Grimesimmediately without waiting for the connection.
1153afe61c15SRodney W. Grimes.Pp
1154afe61c15SRodney W. GrimesThe
1155afe61c15SRodney W. Grimes.Dv CCTS_OFLOW
1156afe61c15SRodney W. Grimes.Pf ( Dv CRTSCTS )
1157afe61c15SRodney W. Grimesflag is currently unused.
1158afe61c15SRodney W. Grimes.Pp
1159afe61c15SRodney W. GrimesIf
1160afe61c15SRodney W. Grimes.Dv MDMBUF
1161afe61c15SRodney W. Grimesis set then output flow control is controlled by the state
1162afe61c15SRodney W. Grimesof Carrier Detect.
1163afe61c15SRodney W. Grimes.Pp
1164afe61c15SRodney W. GrimesIf the object for which the control modes are set is not an asynchronous
1165afe61c15SRodney W. Grimesserial connection, some of the modes may be ignored; for example, if an
1166afe61c15SRodney W. Grimesattempt is made to set the baud rate on a network connection to a
1167afe61c15SRodney W. Grimesterminal on another host, the baud rate may or may not be set on the
1168afe61c15SRodney W. Grimesconnection between that terminal and the machine it is directly connected
1169afe61c15SRodney W. Grimesto.
1170afe61c15SRodney W. Grimes.Ss Local Modes
1171afe61c15SRodney W. GrimesValues of the
1172afe61c15SRodney W. Grimes.Fa c_lflag
1173afe61c15SRodney W. Grimesfield describe the control of
1174afe61c15SRodney W. Grimesvarious functions, and are composed of the following
1175afe61c15SRodney W. Grimesmasks.
1176afe61c15SRodney W. Grimes.Pp
1177afe61c15SRodney W. Grimes.Bl -tag -width NOKERNINFO -offset indent -compact
1178afe61c15SRodney W. Grimes.It Dv ECHOKE
1179afe61c15SRodney W. Grimes/* visual erase for line kill */
1180afe61c15SRodney W. Grimes.It Dv ECHOE
1181afe61c15SRodney W. Grimes/* visually erase chars */
1182afe61c15SRodney W. Grimes.It Dv ECHO
1183afe61c15SRodney W. Grimes/* enable echoing */
1184afe61c15SRodney W. Grimes.It Dv ECHONL
1185afe61c15SRodney W. Grimes/* echo
1186afe61c15SRodney W. Grimes.Dv NL
1187afe61c15SRodney W. Grimeseven if
1188afe61c15SRodney W. Grimes.Dv ECHO
1189afe61c15SRodney W. Grimesis off */
1190afe61c15SRodney W. Grimes.It Dv ECHOPRT
1191afe61c15SRodney W. Grimes/* visual erase mode for hardcopy */
1192afe61c15SRodney W. Grimes.It Dv ECHOCTL
1193afe61c15SRodney W. Grimes/* echo control chars as ^(Char) */
1194afe61c15SRodney W. Grimes.It Dv ISIG
1195afe61c15SRodney W. Grimes/* enable signals
1196afe61c15SRodney W. Grimes.Dv INTR ,
1197afe61c15SRodney W. Grimes.Dv QUIT ,
1198afe61c15SRodney W. Grimes.Dv [D]SUSP
1199afe61c15SRodney W. Grimes*/
1200afe61c15SRodney W. Grimes.It Dv ICANON
1201afe61c15SRodney W. Grimes/* canonicalize input lines */
1202afe61c15SRodney W. Grimes.It Dv ALTWERASE
1203afe61c15SRodney W. Grimes/* use alternate
1204afe61c15SRodney W. Grimes.Dv WERASE
1205afe61c15SRodney W. Grimesalgorithm */
1206afe61c15SRodney W. Grimes.It Dv IEXTEN
1207afe61c15SRodney W. Grimes/* enable
1208afe61c15SRodney W. Grimes.Dv DISCARD
1209afe61c15SRodney W. Grimesand
1210afe61c15SRodney W. Grimes.Dv LNEXT
1211afe61c15SRodney W. Grimes*/
1212afe61c15SRodney W. Grimes.It Dv EXTPROC
1213afe61c15SRodney W. Grimes/* external processing */
1214afe61c15SRodney W. Grimes.It Dv TOSTOP
1215afe61c15SRodney W. Grimes/* stop background jobs from output */
1216afe61c15SRodney W. Grimes.It Dv FLUSHO
1217afe61c15SRodney W. Grimes/* output being flushed (state) */
1218afe61c15SRodney W. Grimes.It Dv NOKERNINFO
1219afe61c15SRodney W. Grimes/* no kernel output from
1220afe61c15SRodney W. Grimes.Dv VSTATUS
1221afe61c15SRodney W. Grimes*/
1222afe61c15SRodney W. Grimes.It Dv PENDIN
1223afe61c15SRodney W. Grimes/* XXX retype pending input (state) */
1224afe61c15SRodney W. Grimes.It Dv NOFLSH
1225afe61c15SRodney W. Grimes/* don't flush after interrupt */
1226afe61c15SRodney W. Grimes.El
1227afe61c15SRodney W. Grimes.Pp
1228afe61c15SRodney W. GrimesIf
1229afe61c15SRodney W. Grimes.Dv ECHO
1230afe61c15SRodney W. Grimesis set, input characters are echoed back to the terminal.  If
1231afe61c15SRodney W. Grimes.Dv ECHO
1232afe61c15SRodney W. Grimesis not set, input characters are not echoed.
1233afe61c15SRodney W. Grimes.Pp
1234afe61c15SRodney W. GrimesIf
1235afe61c15SRodney W. Grimes.Dv ECHOE
1236afe61c15SRodney W. Grimesand
1237afe61c15SRodney W. Grimes.Dv ICANON
1238afe61c15SRodney W. Grimesare set, the
1239afe61c15SRodney W. Grimes.Dv ERASE
1240afe61c15SRodney W. Grimescharacter causes the terminal
1241afe61c15SRodney W. Grimesto erase the last character in the current line from the display, if
1242afe61c15SRodney W. Grimespossible.  If there is no character to erase, an implementation may echo
1243afe61c15SRodney W. Grimesan indication that this was the case or do nothing.
1244afe61c15SRodney W. Grimes.Pp
1245afe61c15SRodney W. GrimesIf
1246afe61c15SRodney W. Grimes.Dv ECHOK
1247afe61c15SRodney W. Grimesand
1248afe61c15SRodney W. Grimes.Dv ICANON
1249afe61c15SRodney W. Grimesare set, the
1250afe61c15SRodney W. Grimes.Dv KILL
1251afe61c15SRodney W. Grimescharacter causes
1252afe61c15SRodney W. Grimesthe current line to be discarded and the system echoes the
1253afe61c15SRodney W. Grimes.Ql \&\en
1254afe61c15SRodney W. Grimescharacter after the
1255afe61c15SRodney W. Grimes.Dv KILL
1256afe61c15SRodney W. Grimescharacter.
1257afe61c15SRodney W. Grimes.Pp
1258afe61c15SRodney W. GrimesIf
1259afe61c15SRodney W. Grimes.Dv ECHOKE
1260afe61c15SRodney W. Grimesand
1261afe61c15SRodney W. Grimes.Dv ICANON
1262afe61c15SRodney W. Grimesare set, the
1263afe61c15SRodney W. Grimes.Dv KILL
1264afe61c15SRodney W. Grimescharacter causes
1265afe61c15SRodney W. Grimesthe current line to be discarded and the system causes
1266afe61c15SRodney W. Grimesthe terminal
1267afe61c15SRodney W. Grimesto erase the line from the display.
1268afe61c15SRodney W. Grimes.Pp
1269afe61c15SRodney W. GrimesIf
1270afe61c15SRodney W. Grimes.Dv ECHOPRT
1271afe61c15SRodney W. Grimesand
1272afe61c15SRodney W. Grimes.Dv ICANON
1273afe61c15SRodney W. Grimesare set, the system assumes
1274afe61c15SRodney W. Grimesthat the display is a printing device and prints a
1275afe61c15SRodney W. Grimesbackslash and the erased characters when processing
1276afe61c15SRodney W. Grimes.Dv ERASE
1277afe61c15SRodney W. Grimescharacters, followed by a forward slash.
1278afe61c15SRodney W. Grimes.Pp
1279afe61c15SRodney W. GrimesIf
1280afe61c15SRodney W. Grimes.Dv ECHOCTL
1281afe61c15SRodney W. Grimesis set, the system echoes control characters
1282afe61c15SRodney W. Grimesin a visible fashion using a caret followed by the control character.
1283afe61c15SRodney W. Grimes.Pp
1284afe61c15SRodney W. GrimesIf
1285afe61c15SRodney W. Grimes.Dv ALTWERASE
1286afe61c15SRodney W. Grimesis set, the system uses an alternative algorithm
1287afe61c15SRodney W. Grimesfor determining what constitutes a word when processing
1288afe61c15SRodney W. Grimes.Dv WERASE
1289afe61c15SRodney W. Grimescharacters (see
1290afe61c15SRodney W. Grimes.Dv WERASE ) .
1291afe61c15SRodney W. Grimes.Pp
1292afe61c15SRodney W. GrimesIf
1293afe61c15SRodney W. Grimes.Dv ECHONL
1294afe61c15SRodney W. Grimesand
1295afe61c15SRodney W. Grimes.Dv ICANON
1296afe61c15SRodney W. Grimesare set, the
1297afe61c15SRodney W. Grimes.Ql \&\en
1298afe61c15SRodney W. Grimescharacter echoes even if
1299afe61c15SRodney W. Grimes.Dv ECHO
1300afe61c15SRodney W. Grimesis not set.
1301afe61c15SRodney W. Grimes.Pp
1302afe61c15SRodney W. GrimesIf
1303afe61c15SRodney W. Grimes.Dv ICANON
1304afe61c15SRodney W. Grimesis set, canonical processing is enabled.  This enables the
1305afe61c15SRodney W. Grimeserase and kill edit functions, and the assembly of input characters into
1306afe61c15SRodney W. Grimeslines delimited by
1307afe61c15SRodney W. Grimes.Dv NL ,
1308afe61c15SRodney W. Grimes.Dv EOF ,
1309afe61c15SRodney W. Grimesand
1310afe61c15SRodney W. Grimes.Dv EOL ,
1311afe61c15SRodney W. Grimesas described in
1312afe61c15SRodney W. Grimes.Sx "Canonical Mode Input Processing" .
1313afe61c15SRodney W. Grimes.Pp
1314afe61c15SRodney W. GrimesIf
1315afe61c15SRodney W. Grimes.Dv ICANON
1316afe61c15SRodney W. Grimesis not set, read requests are satisfied directly from the input
1317afe61c15SRodney W. Grimesqueue.  A read is not satisfied until at least
13185f1376d7SMike Pritchard.Dv MIN
1319afe61c15SRodney W. Grimesbytes have been
1320afe61c15SRodney W. Grimesreceived or the timeout value
13215f1376d7SMike Pritchard.Dv TIME
1322afe61c15SRodney W. Grimesexpired between bytes.  The time value
1323afe61c15SRodney W. Grimesrepresents tenths of seconds.  See
1324afe61c15SRodney W. Grimes.Sx "Noncanonical Mode Input Processing"
1325afe61c15SRodney W. Grimesfor more details.
1326afe61c15SRodney W. Grimes.Pp
1327afe61c15SRodney W. GrimesIf
1328afe61c15SRodney W. Grimes.Dv ISIG
1329afe61c15SRodney W. Grimesis set, each input character is checked against the special
1330afe61c15SRodney W. Grimescontrol characters
1331afe61c15SRodney W. Grimes.Dv INTR ,
1332afe61c15SRodney W. Grimes.Dv QUIT ,
1333afe61c15SRodney W. Grimesand
1334afe61c15SRodney W. Grimes.Dv SUSP
1335afe61c15SRodney W. Grimes(job control only).  If an input
1336afe61c15SRodney W. Grimescharacter matches one of these control characters, the function
1337afe61c15SRodney W. Grimesassociated with that character is performed.  If
1338afe61c15SRodney W. Grimes.Dv ISIG
1339afe61c15SRodney W. Grimesis not set, no
1340afe61c15SRodney W. Grimeschecking is done.  Thus these special input functions are possible only
1341afe61c15SRodney W. Grimesif
1342afe61c15SRodney W. Grimes.Dv ISIG
1343afe61c15SRodney W. Grimesis set.
1344afe61c15SRodney W. Grimes.Pp
1345afe61c15SRodney W. GrimesIf
1346afe61c15SRodney W. Grimes.Dv IEXTEN
1347afe61c15SRodney W. Grimesis set, implementation-defined functions are recognized
1348afe61c15SRodney W. Grimesfrom the input data.  How
1349afe61c15SRodney W. Grimes.Dv IEXTEN
1350afe61c15SRodney W. Grimesbeing set
1351afe61c15SRodney W. Grimesinteracts with
1352afe61c15SRodney W. Grimes.Dv ICANON ,
1353afe61c15SRodney W. Grimes.Dv ISIG ,
1354afe61c15SRodney W. Grimes.Dv IXON ,
1355afe61c15SRodney W. Grimesor
1356afe61c15SRodney W. Grimes.Dv IXOFF
1357afe61c15SRodney W. Grimesis implementation defined.
1358afe61c15SRodney W. GrimesIf
1359afe61c15SRodney W. Grimes.Dv IEXTEN
1360afe61c15SRodney W. Grimesis not set, then
1361afe61c15SRodney W. Grimesimplementation-defined functions are not recognized, and the
1362afe61c15SRodney W. Grimescorresponding input characters are not processed as described for
1363afe61c15SRodney W. Grimes.Dv ICANON ,
1364afe61c15SRodney W. Grimes.Dv ISIG ,
1365afe61c15SRodney W. Grimes.Dv IXON ,
1366afe61c15SRodney W. Grimesand
1367afe61c15SRodney W. Grimes.Dv IXOFF .
1368afe61c15SRodney W. Grimes.Pp
1369afe61c15SRodney W. GrimesIf
1370afe61c15SRodney W. Grimes.Dv NOFLSH
1371afe61c15SRodney W. Grimesis set, the normal flush of the input and output queues
1372afe61c15SRodney W. Grimesassociated with the
1373afe61c15SRodney W. Grimes.Dv INTR ,
1374afe61c15SRodney W. Grimes.Dv QUIT ,
1375afe61c15SRodney W. Grimesand
1376afe61c15SRodney W. Grimes.Dv SUSP
1377afe61c15SRodney W. Grimescharacters
1378afe61c15SRodney W. Grimesare not be done.
1379afe61c15SRodney W. Grimes.Pp
1380afe61c15SRodney W. GrimesIf
1381afe61c15SRodney W. Grimes.Dv TOSTOP
1382afe61c15SRodney W. Grimesis set, the signal
1383afe61c15SRodney W. Grimes.Dv SIGTTOU
1384afe61c15SRodney W. Grimesis sent to the process group of a process that tries to write to
1385afe61c15SRodney W. Grimesits controlling terminal if it is not in the foreground process group for
1386afe61c15SRodney W. Grimesthat terminal.  This signal, by default, stops the members of the process
1387afe61c15SRodney W. Grimesgroup.  Otherwise, the output generated by that process is output to the
1388afe61c15SRodney W. Grimescurrent output stream.  Processes that are blocking or ignoring
1389afe61c15SRodney W. Grimes.Dv SIGTTOU
1390afe61c15SRodney W. Grimessignals are excepted and allowed to produce output and the
1391afe61c15SRodney W. Grimes.Dv SIGTTOU
1392afe61c15SRodney W. Grimessignal
1393afe61c15SRodney W. Grimesis not sent.
1394afe61c15SRodney W. Grimes.Pp
1395afe61c15SRodney W. GrimesIf
1396afe61c15SRodney W. Grimes.Dv NOKERNINFO
1397afe61c15SRodney W. Grimesis set, the kernel does not produce a status message
1398afe61c15SRodney W. Grimeswhen processing
1399afe61c15SRodney W. Grimes.Dv STATUS
1400afe61c15SRodney W. Grimescharacters (see
1401afe61c15SRodney W. Grimes.Dv STATUS ) .
1402afe61c15SRodney W. Grimes.Ss Special Control Characters
1403afe61c15SRodney W. GrimesThe special control characters values are defined by the array
1404afe61c15SRodney W. Grimes.Fa c_cc .
1405afe61c15SRodney W. GrimesThis table lists the array index, the corresponding special character,
1406afe61c15SRodney W. Grimesand the system default value.  For an accurate list of
1407afe61c15SRodney W. Grimesthe system defaults, consult the header file
1408afe61c15SRodney W. Grimes.Aq Pa ttydefaults.h .
1409afe61c15SRodney W. Grimes.Pp
1410afe61c15SRodney W. Grimes.Bl -column "Index Name" "Special Character" -offset indent -compact
1411afe61c15SRodney W. Grimes.It Em "Index Name	Special Character	Default Value"
1412afe61c15SRodney W. Grimes.It Dv VEOF Ta EOF Ta \&^D
1413afe61c15SRodney W. Grimes.It Dv VEOL Ta EOL Ta _POSIX_VDISABLE
1414afe61c15SRodney W. Grimes.It Dv VEOL2 Ta EOL2 Ta _POSIX_VDISABLE
1415afe61c15SRodney W. Grimes.It Dv VERASE Ta ERASE Ta \&^? Ql \&\e177
1416afe61c15SRodney W. Grimes.It Dv VWERASE  Ta WERASE Ta \&^W
1417afe61c15SRodney W. Grimes.It Dv VKILL Ta KILL Ta \&^U
1418afe61c15SRodney W. Grimes.It Dv VREPRINT Ta REPRINT Ta \&^R
1419afe61c15SRodney W. Grimes.It Dv VINTR Ta INTR Ta \&^C
1420afe61c15SRodney W. Grimes.It Dv VQUIT Ta QUIT Ta \&^\e\e Ql \&\e34
1421afe61c15SRodney W. Grimes.It Dv VSUSP Ta SUSP Ta \&^Z
1422afe61c15SRodney W. Grimes.It Dv VDSUSP Ta DSUSP Ta \&^Y
1423afe61c15SRodney W. Grimes.It Dv VSTART Ta START Ta \&^Q
1424afe61c15SRodney W. Grimes.It Dv VSTOP Ta STOP Ta \&^S
1425afe61c15SRodney W. Grimes.It Dv VLNEXT Ta LNEXT Ta \&^V
1426afe61c15SRodney W. Grimes.It Dv VDISCARD Ta DISCARD Ta \&^O
1427afe61c15SRodney W. Grimes.It Dv VMIN Ta --- Ta \&1
1428afe61c15SRodney W. Grimes.It Dv VTIME Ta --- Ta \&0
1429afe61c15SRodney W. Grimes.It Dv VSTATUS Ta STATUS Ta \&^T
1430afe61c15SRodney W. Grimes.El
1431afe61c15SRodney W. Grimes.Pp
1432afe61c15SRodney W. GrimesIf the
1433afe61c15SRodney W. Grimesvalue of one of the changeable special control characters (see
1434afe61c15SRodney W. Grimes.Sx "Special Characters" )
1435afe61c15SRodney W. Grimesis
1436afe61c15SRodney W. Grimes.Dv {_POSIX_VDISABLE} ,
1437afe61c15SRodney W. Grimesthat function is disabled; that is, no input
1438afe61c15SRodney W. Grimesdata is recognized as the disabled special character.
1439afe61c15SRodney W. GrimesIf
1440afe61c15SRodney W. Grimes.Dv ICANON
1441afe61c15SRodney W. Grimesis
1442afe61c15SRodney W. Grimesnot set, the value of
1443afe61c15SRodney W. Grimes.Dv {_POSIX_VDISABLE}
1444afe61c15SRodney W. Grimeshas no special meaning for the
1445afe61c15SRodney W. Grimes.Dv VMIN
1446afe61c15SRodney W. Grimesand
1447afe61c15SRodney W. Grimes.Dv VTIME
1448afe61c15SRodney W. Grimesentries of the
1449afe61c15SRodney W. Grimes.Fa c_cc
1450afe61c15SRodney W. Grimesarray.
1451afe61c15SRodney W. Grimes.Pp
1452afe61c15SRodney W. GrimesThe initial values of the flags and control characters
1453edf0e5b3SMike Pritchardafter
1454edf0e5b3SMike Pritchard.Fn open
1455edf0e5b3SMike Pritchardis set according to
1456afe61c15SRodney W. Grimesthe values in the header
1457afe61c15SRodney W. Grimes.Aq Pa sys/ttydefaults.h .
1458