Print this page
10560 Convert termio(7I) to mandoc
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/man/man7i/termio.7i.man.txt
+++ new/usr/src/man/man7i/termio.7i.man.txt
1 1 TERMIO(7I) Ioctl Requests TERMIO(7I)
2 2
3 -
4 -
5 3 NAME
6 - termio - general terminal interface
4 + termio - general terminal interface
7 5
8 6 SYNOPSIS
9 - #include <termio.h>
7 + #include <termio.h>
10 8
11 - ioctl(int fildes, int request, struct termio *arg);
9 + ioctl(int fildes, int request, struct termio *arg);
12 10
11 + ioctl(int fildes, int request, int arg);
13 12
14 - ioctl(int fildes, int request, int arg);
13 + #include <termios.h>
15 14
15 + ioctl(int fildes, int request, struct termios *arg);
16 16
17 - #include <termios.h>
18 -
19 - ioctl(int fildes, int request, struct termios *arg);
20 -
21 -
22 17 DESCRIPTION
23 - This release supports a general interface for asynchronous
24 - communications ports that is hardware-independent. The user interface
25 - to this functionality is using function calls (the preferred interface)
26 - described in termios(3C) or ioctl commands described in this section.
27 - This section also discusses the common features of the terminal
28 - subsystem which are relevant with both user interfaces.
18 + This release supports a general interface for asynchronous communications
19 + ports that is hardware-independent. The user interface to this
20 + functionality is using function calls (the preferred interface) described
21 + in termios(3C) or ioctl() commands described in this section. This
22 + section also discusses the common features of the terminal subsystem
23 + which are relevant with both user interfaces.
29 24
25 + When a terminal file is opened, it normally causes the process to wait
26 + until a connection is established. In practice, user programs seldom
27 + open terminal files; they are opened by the system and become a user's
28 + standard input, output, and error files. The first terminal file opened
29 + by the session leader that is not already associated with a session
30 + becomes the controlling terminal for that session. The controlling
31 + terminal plays a special role in handling quit and interrupt signals, as
32 + discussed below. The controlling terminal is inherited by a child
33 + process during a fork(2). A process can break this association by
34 + changing its session using setsid(2).
30 35
31 - When a terminal file is opened, it normally causes the process to wait
32 - until a connection is established. In practice, user programs seldom
33 - open terminal files; they are opened by the system and become a user's
34 - standard input, output, and error files. The first terminal file opened
35 - by the session leader that is not already associated with a session
36 - becomes the controlling terminal for that session. The controlling
37 - terminal plays a special role in handling quit and interrupt signals,
38 - as discussed below. The controlling terminal is inherited by a child
39 - process during a fork(2). A process can break this association by
40 - changing its session using setsid() (see setsid(2)).
36 + A terminal associated with one of these files ordinarily operates in
37 + full-duplex mode. Characters may be typed at any time, even while output
38 + is occurring, and are only lost when the character input buffers of the
39 + system become completely full, which is rare. For example, the number of
40 + characters in the line discipline buffer may exceed {MAX_CANON} and
41 + IMAXBEL (see below) is not set, or the user may accumulate {MAX_INPUT}
42 + number of input characters that have not yet been read by some program.
43 + When the input limit is reached, all the characters saved in the buffer
44 + up to that point are thrown away without notice.
41 45
42 -
43 - A terminal associated with one of these files ordinarily operates in
44 - full-duplex mode. Characters may be typed at any time, even while
45 - output is occurring, and are only lost when the character input buffers
46 - of the system become completely full, which is rare. For example, the
47 - number of characters in the line discipline buffer may exceed
48 - {MAX_CANON} and IMAXBEL (see below) is not set, or the user may
49 - accumulate { MAX_INPUT} number of input characters that have not yet
50 - been read by some program. When the input limit is reached, all the
51 - characters saved in the buffer up to that point are thrown away without
52 - notice.
53 -
54 46 Session Management (Job Control)
55 - A control terminal will distinguish one of the process groups in the
56 - session associated with it to be the foreground process group. All
57 - other process groups in the session are designated as background
58 - process groups. This foreground process group plays a special role in
59 - handling signal-generating input characters, as discussed below. By
60 - default, when a controlling terminal is allocated, the controlling
61 - process's process group is assigned as foreground process group.
47 + A control terminal will distinguish one of the process groups in the
48 + session associated with it to be the foreground process group. All other
49 + process groups in the session are designated as background process
50 + groups. This foreground process group plays a special role in handling
51 + signal-generating input characters, as discussed below. By default, when
52 + a controlling terminal is allocated, the controlling process's process
53 + group is assigned as foreground process group.
62 54
55 + Background process groups in the controlling process's session are
56 + subject to a job control line discipline when they attempt to access
57 + their controlling terminal. Process groups can be sent signals that will
58 + cause them to stop, unless they have made other arrangements. An
59 + exception is made for members of orphaned process groups.
63 60
64 - Background process groups in the controlling process's session are
65 - subject to a job control line discipline when they attempt to access
66 - their controlling terminal. Process groups can be sent signals that
67 - will cause them to stop, unless they have made other arrangements. An
68 - exception is made for members of orphaned process groups.
61 + An orphaned process group is one where the process group (see getpgid(2))
62 + has no members with a parent in a different process group but sharing the
63 + same controlling terminal. When a member of an orphaned process group
64 + attempts to access its controlling terminal, EIO is returned because
65 + there would be no way to restart the process if it were stopped on one of
66 + these signals.
69 67
68 + If a member of a background process group attempts to read its
69 + controlling terminal, its process group will be sent a SIGTTIN signal,
70 + which will normally cause the members of that process group to stop. If,
71 + however, the process is ignoring or holding SIGTTIN, or is a member of an
72 + orphaned process group, the read will fail with errno set to EIO, and no
73 + signal is sent.
70 74
71 - An orphaned process group is one where the process group (see
72 - getpgid(2)) has no members with a parent in a different process group
73 - but sharing the same controlling terminal. When a member of an orphaned
74 - process group attempts to access its controlling terminal, EIO is
75 - returned because there would be no way to restart the process if it
76 - were stopped on one of these signals.
75 + If a member of a background process group attempts to write its
76 + controlling terminal and the TOSTOP bit is set in the c_lflag field, its
77 + process group is sent a SIGTTOU signal, which will normally cause the
78 + members of that process group to stop. If, however, the process is
79 + ignoring or holding SIGTTOU, the write will succeed. If the process is
80 + not ignoring or holding SIGTTOU and is a member of an orphaned process
81 + group, the write will fail with errno set to EIO, and no signal will be
82 + sent.
77 83
84 + If TOSTOP is set and a member of a background process group attempts to
85 + ioctl() its controlling terminal, and that ioctl() will modify terminal
86 + parameters (for example, TCSETA, TCSETAW, TCSETAF, or TIOCSPGRP), its
87 + process group will be sent a SIGTTOU signal, which will normally cause
88 + the members of that process group to stop. If, however, the process is
89 + ignoring or holding SIGTTOU, the ioctl will succeed. If the process is
90 + not ignoring or holding SIGTTOU and is a member of an orphaned process
91 + group, the write will fail with errno set to EIO, and no signal will be
92 + sent.
78 93
79 - If a member of a background process group attempts to read its
80 - controlling terminal, its process group will be sent a SIGTTIN signal,
81 - which will normally cause the members of that process group to stop.
82 - If, however, the process is ignoring or holding SIGTTIN, or is a member
83 - of an orphaned process group, the read will fail with errno set to
84 - EIO, and no signal is sent.
85 -
86 -
87 - If a member of a background process group attempts to write its
88 - controlling terminal and the TOSTOP bit is set in the c_lflag field,
89 - its process group is sent a SIGTTOU signal, which will normally cause
90 - the members of that process group to stop. If, however, the process is
91 - ignoring or holding SIGTTOU, the write will succeed. If the process is
92 - not ignoring or holding SIGTTOU and is a member of an orphaned process
93 - group, the write will fail with errno set to EIO, and no signal will
94 - be sent.
95 -
96 -
97 - If TOSTOP is set and a member of a background process group attempts
98 - to ioctl its controlling terminal, and that ioctl will modify terminal
99 - parameters (for example, TCSETA, TCSETAW, TCSETAF, or TIOCSPGRP), its
100 - process group will be sent a SIGTTOU signal, which will normally cause
101 - the members of that process group to stop. If, however, the process is
102 - ignoring or holding SIGTTOU, the ioctl will succeed. If the process is
103 - not ignoring or holding SIGTTOU and is a member of an orphaned process
104 - group, the write will fail with errno set to EIO, and no signal will
105 - be sent.
106 -
107 94 Canonical Mode Input Processing
108 - Normally, terminal input is processed in units of lines. A line is
109 - delimited by a newline (ASCII LF) character, an end-of-file (ASCII EOT)
110 - character, or an end-of-line character. This means that a program
111 - attempting to read will block until an entire line has been typed.
112 - Also, no matter how many characters are requested in the read call, at
113 - most one line will be returned. It is not necessary, however, to read
114 - a whole line at once; any number of characters may be requested in a
115 - read, even one, without losing information.
95 + Normally, terminal input is processed in units of lines. A line is
96 + delimited by a newline (ASCII LF) character, an end-of-file (ASCII EOT)
97 + character, or an end-of-line character. This means that a program
98 + attempting to read will block until an entire line has been typed. Also,
99 + no matter how many characters are requested in the read call, at most one
100 + line will be returned. It is not necessary, however, to read a whole
101 + line at once; any number of characters may be requested in a read, even
102 + one, without losing information.
116 103
104 + During input, erase, erase2, and kill processing is normally done. The
105 + ERASE and ERASE2 character (by default, the character DEL for ERASE and
106 + Control-h for ERASE2) erases the last character typed. The WERASE
107 + character (the character Control-w) erases the last "word" typed in the
108 + current input line (but not any preceding spaces or tabs). A "word" is
109 + defined as a sequence of non-blank characters, with tabs counted as
110 + blanks. None of ERASE or ERASE2 or WERASE will erase beyond the
111 + beginning of the line. The KILL character (by default, the character
112 + NAK) kills (deletes) the entire input line, and optionally outputs a
113 + newline character. All these characters operate on a key stroke basis,
114 + independent of any backspacing or tabbing that may have been done. The
115 + REPRINT character (the character Control-r) prints a newline followed by
116 + all characters that have not been read. Reprinting also occurs
117 + automatically if characters that would normally be erased from the screen
118 + are fouled by program output. The characters are reprinted as if they
119 + were being echoed; consequencely, if ECHO is not set, they are not
120 + printed.
117 121
118 - During input, erase, erase2, and kill processing is normally done. The
119 - ERASE and ERASE2 character (by default, the character DEL for ERASE and
120 - Control-h for ERASE2) erases the last character typed. The WERASE
121 - character (the character Control-w) erases the last "word" typed in
122 - the current input line (but not any preceding spaces or tabs). A "word"
123 - is defined as a sequence of non-blank characters, with tabs counted as
124 - blanks. None of ERASE or ERASE2 or WERASE will erase beyond the
125 - beginning of the line. The KILL character (by default, the character
126 - NAK) kills (deletes) the entire input line, and optionally outputs a
127 - newline character. All these characters operate on a key stroke basis,
128 - independent of any backspacing or tabbing that may have been done. The
129 - REPRINT character (the character Control-r) prints a newline followed
130 - by all characters that have not been read. Reprinting also occurs
131 - automatically if characters that would normally be erased from the
132 - screen are fouled by program output. The characters are reprinted as if
133 - they were being echoed; consequencely, if ECHO is not set, they are not
134 - printed.
122 + The ERASE, ERASE2, and KILL characters may be entered literally by
123 + preceding them with the escape character. In this case, the escape
124 + character is not read. The erase, erase2, and kill characters may be
125 + changed.
135 126
136 -
137 - The ERASE, ERASE2, and KILL characters may be entered literally by
138 - preceding them with the escape character. In this case, the escape
139 - character is not read. The erase, erase2, and kill characters may be
140 - changed.
141 -
142 127 Non-canonical Mode Input Processing
143 - In non-canonical mode input processing, input characters are not
144 - assembled into lines, and erase and kill processing does not occur. The
145 - MIN and TIME values are used to determine how to process the characters
146 - received.
128 + In non-canonical mode input processing, input characters are not
129 + assembled into lines, and erase and kill processing does not occur. The
130 + MIN and TIME values are used to determine how to process the characters
131 + received.
147 132
133 + MIN represents the minimum number of characters that should be received
134 + when the read is satisfied (that is, when the characters are returned to
135 + the user). TIME is a timer of 0.10-second granularity that is used to
136 + timeout bursty and short-term data transmissions. The four possible
137 + values for MIN and TIME and their interactions are described below.
148 138
149 - MIN represents the minimum number of characters that should be received
150 - when the read is satisfied (that is, when the characters are returned
151 - to the user). TIME is a timer of 0.10-second granularity that is used
152 - to timeout bursty and short-term data transmissions. The four possible
153 - values for MIN and TIME and their interactions are described below.
139 + Case A: MIN > 0, TIME > 0 In this case, TIME serves as an intercharacter
140 + timer and is activated after the first
141 + character is received. Since it is an
142 + intercharacter timer, it is reset after a
143 + character is received. The interaction
144 + between MIN and TIME is as follows: as soon as
145 + one character is received, the intercharacter
146 + timer is started. If MIN characters are
147 + received before the intercharacter timer
148 + expires (note that the timer is reset upon
149 + receipt of each character), the read is
150 + satisfied. If the timer expires before MIN
151 + characters are received, the characters
152 + received to that point are returned to the
153 + user. Note that if TIME expires, at least one
154 + character will be returned because the timer
155 + would not have been enabled unless a character
156 + was received. In this case (MIN > 0, TIME >
157 + 0), the read sleeps until the MIN and TIME
158 + mechanisms are activated by the receipt of the
159 + first character. If the number of characters
160 + read is less than the number of characters
161 + available, the timer is not reactivated and
162 + the subsequent read is satisfied immediately.
154 163
155 - Case A: MIN > 0, TIME > 0
156 - In this case, TIME serves as an
157 - intercharacter timer and is activated
158 - after the first character is received.
159 - Since it is an intercharacter timer, it is
160 - reset after a character is received. The
161 - interaction between MIN and TIME is as
162 - follows: as soon as one character is
163 - received, the intercharacter timer is
164 - started. If MIN characters are received
165 - before the intercharacter timer expires
166 - (note that the timer is reset upon receipt
167 - of each character), the read is satisfied.
168 - If the timer expires before MIN characters
169 - are received, the characters received to
170 - that point are returned to the user. Note
171 - that if TIME expires, at least one
172 - character will be returned because the
173 - timer would not have been enabled unless a
174 - character was received. In this case (MIN
175 - > 0, TIME > 0), the read sleeps until the
176 - MIN and TIME mechanisms are activated by
177 - the receipt of the first character. If
178 - the number of characters read is less than
179 - the number of characters available, the
180 - timer is not reactivated and the
181 - subsequent read is satisfied immediately.
164 + Case B: MIN > 0, TIME = 0 In this case, since the value of TIME is zero,
165 + the timer plays no role and only MIN is
166 + significant. A pending read is not satisfied
167 + until MIN characters are received (the pending
168 + read sleeps until MIN characters are
169 + received). A program that uses this case to
170 + read record based terminal I/O may block
171 + indefinitely in the read operation.
182 172
173 + Case C: MIN = 0, TIME > 0 In this case, since MIN 0, TIME no longer
174 + represents an intercharacter timer: it now
175 + serves as a read timer that is activated as
176 + soon as a read(2) is done. A read is
177 + satisfied as soon as a single character is
178 + received or the read timer expires. Note
179 + that, in this case, if the timer expires, no
180 + character is returned. If the timer does not
181 + expire, the only way the read can be satisfied
182 + is if a character is received. In this case,
183 + the read will not block indefinitely waiting
184 + for a character; if no character is received
185 + within TIME *.10 seconds after the read is
186 + initiated, the read returns with zero
187 + characters.
183 188
184 - Case B: MIN > 0, TIME = 0
185 - In this case, since the value of TIME is
186 - zero, the timer plays no role and only MIN
187 - is significant. A pending read is not
188 - satisfied until MIN characters are
189 - received (the pending read sleeps until
190 - MIN characters are received). A program
191 - that uses this case to read record based
192 - terminal I/O may block indefinitely in the
193 - read operation.
189 + Case D: MIN = 0, TIME = 0 In this case, return is immediate. The
190 + minimum of either the number of characters
191 + requested or the number of characters
192 + currently available is returned without
193 + waiting for more characters to be input.
194 194
195 -
196 - Case C: MIN = 0, TIME > 0
197 - In this case, since MIN = 0, TIME no
198 - longer represents an intercharacter timer:
199 - it now serves as a read timer that is
200 - activated as soon as a read is done. A
201 - read is satisfied as soon as a single
202 - character is received or the read timer
203 - expires. Note that, in this case, if the
204 - timer expires, no character is returned.
205 - If the timer does not expire, the only way
206 - the read can be satisfied is if a
207 - character is received. In this case, the
208 - read will not block indefinitely waiting
209 - for a character; if no character is
210 - received within TIME *.10 seconds after
211 - the read is initiated, the read returns
212 - with zero characters.
213 -
214 -
215 - Case D: MIN = 0, TIME = 0
216 - In this case, return is immediate. The
217 - minimum of either the number of characters
218 - requested or the number of characters
219 - currently available is returned without
220 - waiting for more characters to be input.
221 -
222 -
223 195 Comparing Different Cases of MIN, TIME Interaction
224 - Some points to note about MIN and TIME :
196 + Some points to note about MIN and TIME:
225 197
226 - o In the following explanations, note that the interactions of
227 - MIN and TIME are not symmetric. For example, when MIN > 0
228 - and TIME = 0, TIME has no effect. However, in the opposite
229 - case, where MIN = 0 and TIME > 0, both MIN and TIME play
230 - a role in that MIN is satisfied with the receipt of a single
231 - character.
198 + o In the following explanations, note that the interactions of MIN
199 + and TIME are not symmetric. For example, when MIN > 0 and TIME =
200 + 0, TIME has no effect. However, in the opposite case, where MIN =
201 + 0 and TIME > 0, both MIN and TIME play a role in that MIN is
202 + satisfied with the receipt of a single character.
232 203
233 - o Also note that in case A (MIN > 0, TIME > 0), TIME
234 - represents an intercharacter timer, whereas in case C ( MIN
235 - = 0, TIME > 0), TIME represents a read timer.
204 + o Also note that in case A (MIN > 0, TIME > 0), TIME represents an
205 + intercharacter timer, whereas in case C (MIN = 0, TIME > 0), TIME
206 + represents a read timer.
236 207
208 + These two points highlight the dual purpose of the MIN/TIME feature.
209 + Cases A and B, where MIN > 0, exist to handle burst mode activity (for
210 + example, file transfer programs), where a program would like to process
211 + at least MIN characters at a time. In case A, the inteercharacter timer
212 + is activated by a user as a safety measure; in case B, the timer is
213 + turned off.
237 214
238 - These two points highlight the dual purpose of the MIN/TIME feature.
239 - Cases A and B, where MIN > 0, exist to handle burst mode activity (for
240 - example, file transfer programs), where a program would like to process
241 - at least MIN characters at a time. In case A, the intercharacter timer
242 - is activated by a user as a safety measure; in case B, the timer is
243 - turned off.
215 + Cases C and D exist to handle single character, timed transfers. These
216 + cases are readily adaptable to screen-based applications that need to
217 + know if a character is present in the input queue before refreshing the
218 + screen. In case C, the read is timed, whereas in case D, it is not.
244 219
220 + Another important note is that MIN is always just a minimum. It does not
221 + denote a record length. For example, if a program does a read of 20
222 + bytes, MIN is 10, and 25 characters are present, then 20 characters will
223 + be returned to the user.
245 224
246 - Cases C and D exist to handle single character, timed transfers. These
247 - cases are readily adaptable to screen-based applications that need to
248 - know if a character is present in the input queue before refreshing the
249 - screen. In case C, the read is timed, whereas in case D, it is not.
250 -
251 -
252 - Another important note is that MIN is always just a minimum. It does
253 - not denote a record length. For example, if a program does a read of 20
254 - bytes, MIN is 10, and 25 characters are present, then 20 characters
255 - will be returned to the user.
256 -
257 225 Writing Characters
258 - When one or more characters are written, they are transmitted to the
259 - terminal as soon as previously written characters have finished typing.
260 - Input characters are echoed as they are typed if echoing has been
261 - enabled. If a process produces characters more rapidly than they can be
262 - typed, it will be suspended when its output queue exceeds some limit.
263 - When the queue is drained down to some threshold, the program is
264 - resumed.
226 + When one or more characters are written, they are transmitted to the
227 + terminal as soon as previously written characters have finished typing.
228 + nputt characters are echoed as they are typed if echoing has been
229 + enabled. If a process produces characters more rapidly than they can be
230 + typed, it will be suspended when its output queue exceeds some limit.
231 + When the queue is drained down to some threshold, the program is resumed.
265 232
266 233 Special Characters
267 - Certain characters have special functions on input. These functions and
268 - their default character values are summarized as follows:
234 + Certain characters have special functions on input. These functions and
235 + their default character values are summarized as follows:
269 236
270 - INTR
271 - (Control-c or ASCII ETX) generates a SIGINT signal. SIGINT
272 - is sent to all foreground processes associated with the
273 - controlling terminal. Normally, each such process is forced
274 - to terminate, but arrangements may be made either to ignore
275 - the signal or to receive a trap to an agreed upon location.
276 - (See signal.h(3HEAD)).
237 + INTR (Control-c or ASCII ETX) generates a SIGINT signal. SIGINT is
238 + sent to all foreground processes associated with the controlling
239 + terminal. Normally, each such process is forced to terminate,
240 + but arrangements may be made either to ignore the signal or to
241 + receive a trap to an agreed upon location. (See
242 + signal.h(3HEAD)).
277 243
244 + QUIT (Control-| or ASCII FS) generates a SIGQUIT signal. Its
245 + treatment is identical to the interrupt signal except that,
246 + unless a receiving process has made other arrangements, it will
247 + not only be terminated but a core image file (called core) will
248 + be created in the current working directory.
278 249
279 - QUIT
280 - (Control-| or ASCII FS) generates a SIGQUIT signal. Its
281 - treatment is identical to the interrupt signal except that,
282 - unless a receiving process has made other arrangements, it
283 - will not only be terminated but a core image file (called
284 - core) will be created in the current working directory.
250 + ERASE (DEL) erases the preceding character. It does not erase beyond
251 + the start of a line, as delimited by a NL, EOF, EOL, or EOL2
252 + character.
285 253
254 + ERASE2 (Control-h or ASCII BS) erases the preceding character, with
255 + behaviour identical to that of ERASE.
286 256
287 - ERASE
288 - (DEL) erases the preceding character. It does not erase
289 - beyond the start of a line, as delimited by a NL, EOF, EOL,
290 - or EOL2 character.
257 + WERASE (Control-w or ASCII ETX) erases the preceding "word". It does
258 + not erase beyond the start of a line, as delimited by a NL, EOF,
259 + EOL, or EOL2 character.
291 260
261 + KILL (Control-u or ASCII NAK) deletes the entire line, as delimited
262 + by a NL, EOF, EOL, or EOL2 character.
292 263
293 - ERASE2
294 - (Control-h or ASCII BS) erases the preceding character, with
295 - behaviour identical to that of ERASE.
264 + REPRINT (Control-r or ASCII DC2) reprints all characters, preceded by a
265 + newline, that have not been read.
296 266
267 + EOF (Control-d or ASCII EOT) may be used to generate an end-of-file
268 + from a terminal. When received, all the characters waiting to
269 + be read are immediately passed to the program, without waiting
270 + for a newline, and the EOF is discarded. Thus, if no characters
271 + are waiting (that is, the EOF occurred at the beginning of a
272 + line) zero characters are passed back, which is the standard
273 + end-of-file indication. Unless escaped, the EOF character is
274 + not echoed. Because EOT is the default EOF character, this
275 + prevents terminals that respond to EOT from hanging up.
297 276
298 - WERASE
299 - (Control-w or ASCII ETX) erases the preceding "word". It
300 - does not erase beyond the start of a line, as delimited by a
301 - NL, EOF, EOL, or EOL2 character.
277 + NL (ASCII LF) is the normal line delimiter. It cannot be changed
278 + or escaped.
302 279
280 + EOL (ASCII NULL) is an additional line delimiter, like NL. It is
281 + not normally used.
303 282
304 - KILL
305 - (Control-u or ASCII NAK) deletes the entire line, as
306 - delimited by a NL, EOF, EOL, or EOL2 character.
283 + EOL2 is another additional line delimiter.
307 284
285 + SWTCH (Control-z or ASCII EM) Header file symbols related to this
286 + special character are present for compatibility purposes only
287 + and the kernel takes no special action on matching SWTCH (except
288 + to discard the character).
308 289
309 - REPRINT
310 - (Control-r or ASCII DC2) reprints all characters, preceded
311 - by a newline, that have not been read.
290 + SUSP (Control-z or ASCII SUB) generates a SIGTSTP signal. SIGTSTP
291 + stops all processes in the foreground process group for that
292 + terminal.
312 293
294 + DSUSP (Control-y or ASCII EM). It generates a SIGTSTP signal as SUSP
295 + does, but the signal is sent when a process in the foreground
296 + process group attempts to read the DSUSP character, rather than
297 + when it is typed.
313 298
314 - EOF
315 - (Control-d or ASCII EOT) may be used to generate an end-of-
316 - file from a terminal. When received, all the characters
317 - waiting to be read are immediately passed to the program,
318 - without waiting for a newline, and the EOF is discarded.
319 - Thus, if no characters are waiting (that is, the EOF
320 - occurred at the beginning of a line) zero characters are
321 - passed back, which is the standard end-of-file indication.
322 - Unless escaped, the EOF character is not echoed. Because EOT
323 - is the default EOF character, this prevents terminals that
324 - respond to EOT from hanging up.
299 + STOP (Control-s or ASCII DC3) can be used to suspend output
300 + temporarily. It is useful with CRT terminals to prevent output
301 + from disappearing before it can be read. While output is
302 + suspended, STOP characters are ignored and not read.
325 303
304 + START (Control-q or ASCII DC1) is used to resume output. Output has
305 + been suspended by a STOP character. While output is not
306 + suspended, START characters are ignored and not read.
326 307
327 - NL
328 - (ASCII LF) is the normal line delimiter. It cannot be
329 - changed or escaped.
308 + DISCARD (Control-o or ASCII SI) causes subsequent output to be
309 + discarded. Output is discarded until another DISCARD character
310 + is typed, more input arrives, or the condition is cleared by a
311 + program.
330 312
313 + STATUS (Control-t or ASCII DC4) generates a SIGINFO signal. Processes
314 + with a handler will output status information when they receive
315 + SIGINFO, for example, dd(1M). If a process does not have a
316 + SIGINFO handler, the signal will be ignored.
331 317
332 - EOL
333 - (ASCII NULL) is an additional line delimiter, like NL . It
334 - is not normally used.
318 + LNEXT (Control-v or ASCII SYN) causes the special meaning of the next
319 + character to be ignored. This works for all the special
320 + characters mentioned above. It allows characters to be input
321 + that would otherwise be interpreted by the system (for example
322 + KILL, QUIT). The character values for INTR, QUIT, ERASE,
323 + ERASE2, WERASE, KILL, REPRINT, EOF, EOL, EOL2, SWTCH, SUSP,
324 + DSUSP, STOP, START, DISCARD, STATUS, and LNEXT may be changed to
325 + suit individual tastes. If the value of a special control
326 + character is _POSIX_VDISABLE (0), the function of that special
327 + control character is disabled. The ERASE, ERASE2, KILL, and EOF
328 + characters may be escaped by a preceding backslash (\)
329 + character, in which case no special function is done. Any of
330 + the special characters may be preceded by the LNEXT character,
331 + in which case no special function is done.
335 332
336 -
337 - EOL2
338 - is another additional line delimiter.
339 -
340 -
341 - SWTCH
342 - (Control-z or ASCII EM) Header file symbols related to this
343 - special character are present for compatibility purposes
344 - only and the kernel takes no special action on matching
345 - SWTCH (except to discard the character).
346 -
347 -
348 - SUSP
349 - (Control-z or ASCII SUB) generates a SIGTSTP signal.
350 - SIGTSTP stops all processes in the foreground process group
351 - for that terminal.
352 -
353 -
354 - DSUSP
355 - (Control-y or ASCII EM). It generates a SIGTSTP signal as
356 - SUSP does, but the signal is sent when a process in the
357 - foreground process group attempts to read the DSUSP
358 - character, rather than when it is typed.
359 -
360 -
361 - STOP
362 - (Control-s or ASCII DC3) can be used to suspend output
363 - temporarily. It is useful with CRT terminals to prevent
364 - output from disappearing before it can be read. While output
365 - is suspended, STOP characters are ignored and not read.
366 -
367 -
368 - START
369 - (Control-q or ASCII DC1) is used to resume output. Output
370 - has been suspended by a STOP character. While output is not
371 - suspended, START characters are ignored and not read.
372 -
373 -
374 - DISCARD
375 - (Control-o or ASCII SI) causes subsequent output to be
376 - discarded. Output is discarded until another DISCARD
377 - character is typed, more input arrives, or the condition is
378 - cleared by a program.
379 -
380 -
381 - STATUS
382 - (Control-t or ASCII DC4) generates a SIGINFO signal.
383 - Processes with a handler will output status information when
384 - they receive SIGINFO, for example, dd(1M). If a process does
385 - not have a SIGINFO handler, the signal will be ignored.
386 -
387 -
388 - LNEXT
389 - (Control-v or ASCII SYN) causes the special meaning of the
390 - next character to be ignored. This works for all the
391 - special characters mentioned above. It allows characters to
392 - be input that would otherwise be interpreted by the system
393 - (for example KILL, QUIT). The character values for INTR,
394 - QUIT, ERASE, ERASE2, WERASE, KILL, REPRINT, EOF, EOL, EOL2,
395 - SWTCH, SUSP, DSUSP, STOP, START, DISCARD, STATUS, and LNEXT
396 - may be changed to suit individual tastes. If the value of a
397 - special control character is _POSIX_VDISABLE (0), the
398 - function of that special control character is disabled. The
399 - ERASE, ERASE2, KILL, and EOF characters may be escaped by a
400 - preceding backslash (\) character, in which case no special
401 - function is done. Any of the special characters may be
402 - preceded by the LNEXT character, in which case no special
403 - function is done.
404 -
405 -
406 333 Modem Disconnect
407 - When a modem disconnect is detected, a SIGHUP signal is sent to the
408 - terminal's controlling process. Unless other arrangements have been
409 - made, these signals cause the process to terminate. If SIGHUP is
410 - ignored or caught, any subsequent read returns with an end-of-file
411 - indication until the terminal is closed.
334 + When a modem disconnect is detected, a SIGHUP signal is sent to the
335 + terminal's controlling process. Unless other arrangements have been
336 + made, these signals cause the process to terminate. If SIGHUP is ignored
337 + or caught, any subsequent read returns with an end-of-file indication
338 + until the terminal is closed.
412 339
340 + If the controlling process is not in the foreground process group of the
341 + terminal, a SIGTSTP is sent to the terminal's foreground process group.
342 + Unless other arrangements have been made, these signals cause the
343 + processes to stop.
413 344
414 - If the controlling process is not in the foreground process group of
415 - the terminal, a SIGTSTP is sent to the terminal's foreground process
416 - group. Unless other arrangements have been made, these signals cause
417 - the processes to stop.
345 + Processes in background process groups that attempt to access the
346 + controlling terminal after modem disconnect while the terminal is still
347 + allocated to the session will receive appropriate SIGTTOU and SIGTTIN
348 + signals. Unless other arrangements have been made, this signal causes
349 + the processes to stop.
418 350
351 + The controlling terminal will remain in this state until it is
352 + reinitialized ithh a successful open by the controlling process, or
353 + deallocated by the controlling process.
419 354
420 - Processes in background process groups that attempt to access the
421 - controlling terminal after modem disconnect while the terminal is still
422 - allocated to the session will receive appropriate SIGTTOU and SIGTTIN
423 - signals. Unless other arrangements have been made, this signal causes
424 - the processes to stop.
425 -
426 -
427 - The controlling terminal will remain in this state until it is
428 - reinitialized with a successful open by the controlling process, or
429 - deallocated by the controlling process.
430 -
431 355 Terminal Parameters
432 - The parameters that control the behavior of devices and modules
433 - providing the termios interface are specified by the termios structure
434 - defined by termios.h. Several ioctl(2) system calls that fetch or
435 - change these parameters use this structure that contains the following
436 - members:
356 + The parameters that control the behavior of devices and modules providing
357 + the termios interface are specified by the termios structure defined by
358 + <termios.h>. Several ioctl(2) system calls that fetch or change these
359 + parameters use this structure that contains the following members:
437 360
438 - tcflag_t c_iflag; /* input modes */
439 - tcflag_t c_oflag; /* output modes */
440 - tcflag_t c_cflag; /* control modes */
441 - tcflag_t c_lflag; /* local modes */
442 - cc_t c_cc[NCCS]; /* control chars */
361 + tcflag_t c_iflag; /* input modes */
362 + tcflag_t c_oflag; /* output modes */
363 + tcflag_t c_cflag; /* control modes */
364 + tcflag_t c_lflag; /* local modes */
365 + cc_t c_cc[NCCS]; /* control chars */
443 366
367 + The special control characters are defined by the array c_cc. The
368 + symbolic name NCCS is the size of the Control-character array and is also
369 + defined by <termios.h>. The relative positions, subscript names, and
370 + typical default values for each function are as follows:
444 371
372 + Relative Position Subscript Name Typical Default Value
373 + 0 VINTR ETX
374 + 1 VQUIT FS
375 + 2 VERASE DEL
376 + 3 VKILL NAK
377 + 4 VEOF EOT
378 + 5 VEOL NUL
379 + 6 VEOL2 NUL
380 + 7 VWSTCH NUL
381 + 8 VSTART NUL
382 + 9 VSTOP DC3
383 + 10 VSUSP SUB
384 + 11 VDSUSP EM
385 + 12 VREPRINT DC2
386 + 13 VDISCARD SI
387 + 14 VWERASE ETB
388 + 15 VLNEXT SYN
389 + 16 VSTATUS DC4
390 + 17 VERASE2 BS
391 + 18-19 Reserved
445 392
446 - The special control characters are defined by the array c_cc. The
447 - symbolic name NCCS is the size of the Control-character array and is
448 - also defined by <termios.h>. The relative positions, subscript names,
449 - and typical default values for each function are as follows:
450 -
451 -
452 -
453 -
454 - +------------------+----------------+-----------------------+
455 - |Relative Position | Subscript Name | Typical Default Value |
456 - +------------------+----------------+-----------------------+
457 - |0 | VINTR | ETX |
458 - +------------------+----------------+-----------------------+
459 - |1 | VQUIT | FS |
460 - +------------------+----------------+-----------------------+
461 - |2 | VERASE | DEL |
462 - +------------------+----------------+-----------------------+
463 - |3 | VKILL | NAK |
464 - +------------------+----------------+-----------------------+
465 - |4 | VEOF | EOT |
466 - +------------------+----------------+-----------------------+
467 - |5 | VEOL | NUL |
468 - +------------------+----------------+-----------------------+
469 - |6 | VEOL2 | NUL |
470 - +------------------+----------------+-----------------------+
471 - |7 | VWSTCH | NUL |
472 - +------------------+----------------+-----------------------+
473 - |8 | VSTART | NUL |
474 - +------------------+----------------+-----------------------+
475 - |9 | VSTOP | DC3 |
476 - +------------------+----------------+-----------------------+
477 - |10 | VSUSP | SUB |
478 - +------------------+----------------+-----------------------+
479 - |11 | VDSUSP | EM |
480 - +------------------+----------------+-----------------------+
481 - |12 | VREPRINT | DC2 |
482 - +------------------+----------------+-----------------------+
483 - |13 | VDISCARD | SI |
484 - +------------------+----------------+-----------------------+
485 - |14 | VWERASE | ETB |
486 - +------------------+----------------+-----------------------+
487 - |15 | VLNEXT | SYN |
488 - +------------------+----------------+-----------------------+
489 - |16 | VSTATUS | DC4 |
490 - +------------------+----------------+-----------------------+
491 - |17 | VERASE2 | BS |
492 - +------------------+----------------+-----------------------+
493 - |18-19 | Reserved | |
494 - +------------------+----------------+-----------------------+
495 -
496 393 Input Modes
497 - The c_iflag field describes the basic terminal input control:
394 + The c_iflag field describes the basic terminal input control:
498 395
499 - IGNBRK
500 - Ignore break condition.
396 + IGNBRK Ignore break condition.
397 + BRKINT Signal interrupt on break.
398 + IGNPAR Ignore characters with parity errors.
399 + PARMRK Mark parity errors.
400 + INPCK Enable input parity check.
401 + ISTRIP Strip character.
402 + INLCR Map NL to CR on input.
403 + IGNCR Ignore CR.
404 + ICRNL Map CR to NL on input.
405 + IUCLC Map upper-case to lower-case on input.
406 + IXON Enable start/stop output control.
407 + IXANY Enable any character to restart output.
408 + IXOFF Enable start/stop input control.
409 + IMAXBEL Echo BEL on input line too long.
501 410
411 + If IGNBRK is set, a break condition (a character framing error with data
412 + all zeros) detected on input is ignored, that is, not put on the input
413 + queue and therefore not read by any process. If IGNBRK is not set and
414 + BRKINT is set, the break condition shall flush the input and output
415 + queues and if the terminal is the controlling terminal of a foreground
416 + process group, the break condition generates a single SIGINT signal to
417 + that foreground process group. If neither IGNBRK nor BRKINT is set, a
418 + break condition is read as a single `\0' (ASCII NULL) character, or if
419 + PARMRK is set, as `\377', `\0', c, where `\377' is a single character
420 + with value 377 octal (0xff hex, 255 decimal), `\0' is a single character
421 + with value 0, and c is the errored character received.
502 422
503 - BRKINT
504 - Signal interrupt on break.
423 + If IGNPAR is set, a byte with framing or parity errors (other than break)
424 + is ignored.
505 425
426 + If PARMRK is set, and IGNPAR is not set, a byte with a framing or parity
427 + error (other than break) is given to the application as the three-
428 + character sequence: `\377', `\0', c, where `\377' is a single character
429 + with value 377 octal (0xff hex, 255 decimal), `\0' is a single character
430 + with value 0, and c is the errored character received. To avoid
431 + ambiguity in this case, if ISTRIP is not set, a valid character of `\377'
432 + is given to the application as `\377'. If neither IGNPAR nor PARMRK is
433 + set, a framing or parity error (other than break) is given to the
434 + application as a single `\0' (ASCII NULL) character.
506 435
507 - IGNPAR
508 - Ignore characters with parity errors.
436 + If INPCK is set, input parity checking is enabled. If INPCK is not set,
437 + input parity checking is disabled. This allows output parity generation
438 + without input parity errors. Note that whether input parity checking is
439 + enabled or disabled is independent of whether parity detection is enabled
440 + or disabled. If parity detection is enabled but input parity checking is
441 + disabled, the hardware to which the terminal is connected will recognize
442 + the parity bit, but the terminal special file will not check whether this
443 + is set correctly or not.
509 444
445 + If ISTRIP is set, valid input characters are first stripped to seven
446 + bits, otherwise all eight bits are processed.
510 447
511 - PARMRK
512 - Mark parity errors.
448 + If INLCR is set, a received NL character is translated into a CR
449 + character. If IGNCR is set, a received CR character is ignored (not
450 + read). Otherwise, if ICRNL is set, a received CR character is translated
451 + into a NL character.
513 452
453 + If IUCLC is set, a received upper case, alphabetic character is
454 + translated into the corresponding lower case character.
514 455
515 - INPCK
516 - Enable input parity check.
456 + If IXON is set, start/stop output control is enabled. A received STOP
457 + character suspends output and a received START character restarts output.
458 + The STOP and START characters will not be read, but will merely perform
459 + flow control functions. If IXANY is set, any input character restarts
460 + output that has been suspended.
517 461
462 + If IXOFF is set, the system transmits a STOP character when the input
463 + queue is nearly full, and a START character when enough input has been
464 + read so that the input queue is nearly empty again.
518 465
519 - ISTRIP
520 - Strip character.
466 + If IMAXBEL is set, the ASCII BEL character is echoed if the input stream
467 + overflows. Further input is not stored, but any input already present in
468 + the input stream is not disturbed. If IMAXBEL is not set, no BEL
469 + character is echoed, and all input present in the input queue is
470 + discarded if the input stream overflows.
521 471
522 -
523 - INLCR
524 - Map NL to CR on input.
525 -
526 -
527 - IGNCR
528 - Ignore CR.
529 -
530 -
531 - ICRNL
532 - Map CR to NL on input.
533 -
534 -
535 - IUCLC
536 - Map upper-case to lower-case on input.
537 -
538 -
539 - IXON
540 - Enable start/stop output control.
541 -
542 -
543 - IXANY
544 - Enable any character to restart output.
545 -
546 -
547 - IXOFF
548 - Enable start/stop input control.
549 -
550 -
551 - IMAXBEL
552 - Echo BEL on input line too long.
553 -
554 -
555 -
556 - If IGNBRK is set, a break condition (a character framing error with
557 - data all zeros) detected on input is ignored, that is, not put on the
558 - input queue and therefore not read by any process. If IGNBRK is not set
559 - and BRKINT is set, the break condition shall flush the input and output
560 - queues and if the terminal is the controlling terminal of a foreground
561 - process group, the break condition generates a single SIGINT signal to
562 - that foreground process group. If neither IGNBRK nor BRKINT is set, a
563 - break condition is read as a single '\0' (ASCII NULL) character, or if
564 - PARMRK is set, as '\377', '\0', c, where '\377' is a single character
565 - with value 377 octal (0xff hex, 255 decimal), '\0' is a single
566 - character with value 0, and c is the errored character received.
567 -
568 -
569 - If IGNPAR is set, a byte with framing or parity errors (other than
570 - break) is ignored.
571 -
572 -
573 - If PARMRK is set, and IGNPAR is not set, a byte with a framing or
574 - parity error (other than break) is given to the application as the
575 - three-character sequence: '\377', '\0', c, where '\377' is a single
576 - character with value 377 octal (0xff hex, 255 decimal), '\0' is a
577 - single character with value 0, and c is the errored character received.
578 - To avoid ambiguity in this case, if ISTRIP is not set, a valid
579 - character of '\377' is given to the application as `\377.' If neither
580 - IGNPAR nor PARMRK is set, a framing or parity error (other than break)
581 - is given to the application as a single '\0' (ASCII NULL) character.
582 -
583 -
584 - If INPCK is set, input parity checking is enabled. If INPCK is not set,
585 - input parity checking is disabled. This allows output parity generation
586 - without input parity errors. Note that whether input parity checking
587 - is enabled or disabled is independent of whether parity detection is
588 - enabled or disabled. If parity detection is enabled but input parity
589 - checking is disabled, the hardware to which the terminal is connected
590 - will recognize the parity bit, but the terminal special file will not
591 - check whether this is set correctly or not.
592 -
593 -
594 - If ISTRIP is set, valid input characters are first stripped to seven
595 - bits, otherwise all eight bits are processed.
596 -
597 -
598 - If INLCR is set, a received NL character is translated into a CR
599 - character. If IGNCR is set, a received CR character is ignored (not
600 - read). Otherwise, if ICRNL is set, a received CR character is
601 - translated into a NL character.
602 -
603 -
604 - If IUCLC is set, a received upper case, alphabetic character is
605 - translated into the corresponding lower case character.
606 -
607 -
608 - If IXON is set, start/stop output control is enabled. A received STOP
609 - character suspends output and a received START character restarts
610 - output. The STOP and START characters will not be read, but will merely
611 - perform flow control functions. If IXANY is set, any input character
612 - restarts output that has been suspended.
613 -
614 -
615 - If IXOFF is set, the system transmits a STOP character when the input
616 - queue is nearly full, and a START character when enough input has been
617 - read so that the input queue is nearly empty again.
618 -
619 -
620 - If IMAXBEL is set, the ASCII BEL character is echoed if the input
621 - stream overflows. Further input is not stored, but any input already
622 - present in the input stream is not disturbed. If IMAXBEL is not set,
623 - no BEL character is echoed, and all input present in the input queue is
624 - discarded if the input stream overflows.
625 -
626 472 Output Modes
627 - The c_oflag field specifies the system treatment of output:
473 + The c_oflag field specifies the system treatment of output:
628 474
629 - OPOST
630 - Post-process output.
631 -
632 -
633 - OLCUC
634 - Map lower case to upper on output.
635 -
636 -
637 - ONLCR
638 - Map NL to CR-NL on output.
639 -
640 -
641 - OCRNL
642 - Map CR to NL on output.
643 -
644 -
645 - ONOCR
646 - No CR output at column 0.
647 -
648 -
649 - ONLRET
650 - NL performs CR function.
651 -
652 -
653 - OFILL
654 - Use fill characters for delay.
655 -
656 -
657 - OFDEL
658 - Fill is DEL, else NULL.
659 -
660 -
661 - NLDLY
662 - Select newline delays:
663 - NL0
664 - NL1
665 -
666 -
667 - CRDLY
668 - Select carriage-return delays:
669 - CR0
670 - CR1
671 - CR2
672 - CR3
673 -
674 -
675 - TABDLY
676 - Select horizontal tab delays or tab expansion:
677 -
475 + OPOST Post-process output.
476 + OLCUC Map lower case to upper on output.
477 + ONLCR Map NL to CR-NL on output.
478 + OCRNL Map CR to NL on output.
479 + ONOCR No CR output at column 0.
480 + ONLRET NL performs CR function.
481 + OFILL Use fill characters for delay.
482 + OFDEL Fill is DEL, else INULL.
483 + NLDLY Select newline delays:
484 + NL0
485 + NL1
486 + CRDLY Select carriage-return delays:
487 + CR0
488 + CR1
489 + CR2
490 + CR3
491 + TABDLY Select horizontal tab delays or tab expansion:
678 492 TAB0
679 -
680 -
681 -
682 493 TAB1
683 -
684 -
685 -
686 494 TAB2
495 + TAB3 Expand tabs to spaces
496 + XTABS Expand tabs to spaces
497 + BSDLY Select backspace delays:
498 + BS0
499 + BS1
500 + VTDLY Select vertical tab delays:
501 + VT0
502 + VT1
503 + FFDLY Select form feed delays:
504 + FF0
505 + FF1
687 506
507 + If OPOST is set, output characters are post-processed as indicated by the
508 + remaining flags; otherwise, characters are transmitted without change.
688 509
510 + If OLCUC is set, a lower case alphabetic character is transmitted as the
511 + corresponding upper case character. This function is often used in
512 + conjunction with IUCLC.
689 513
690 - TAB3
691 - Expand tabs to spaces
514 + If ONLCR is set, the NL character is transmitted as the CR-NL character
515 + pair. If OCRNL is set, the CR character is transmitted as the NL
516 + character. If ONOCR is set, no CR character is transmitted when at
517 + column 0 (first position). If ONRET is set, the NL character is assumed
518 + to do the carriage-return function; the column pointer is set to 0 and
519 + the delays specified for CR are used. Otherwise, the NL character is
520 + assumed to do just the line-feed function; the column pointer remains
521 + unchanged. The column pointer is also set to 0 if the CR character is
522 + actually transmitted.
692 523
524 + The delay bits specify how long transmission stops to allow for
525 + mechanical or other movement when certain characters are sent to the
526 + terminal. In all cases, a value of 0 indicates no delay. If OFILL is
527 + set, fill characters are transmitted for delay instead of a timed delay.
528 + This is useful for high baud rate terminals that need only a minimal
529 + delay. If OFDEL is set, the fill character is DEL; otherwise it is NULL.
693 530
694 - XTABS
695 - Expand tabs to spaces
531 + If a form-feed or vertical-tab delay is specified, it lasts for about 2
532 + seconds.
696 533
534 + Newline delay lasts about 0.10 seconds. If ONLRET is set, the carriage-
535 + return delays are used instead of the newline delays. If OFILL is set,
536 + two fill characters are transmitted.
697 537
538 + Carriage-return delay type 1 is dependent on the current column position,
539 + type 2 is about 0.10 seconds, and type 3 is about 0.15 seconds. If OFILL
540 + is set, delay type 1 transmits two fill characters, and type 2 transmits
541 + four fill characters.
698 542
699 - BSDLY
700 - Select backspace delays:
701 - BS0
702 - BS1
543 + Horizontal-tab delay type 1 is dependent on the current column position.
544 + Type 2 is about 0.10 seconds. Type 3 specifies that tabs are to be
545 + expanded into spaces. If OFILL is set, two fill characters are
546 + transmitted for any delay.
703 547
548 + Backspace delay lasts about 0.05 seconds. If OFILL is set, one fill
549 + character is transmitted.
704 550
705 - VTDLY
706 - Select vertical tab delays:
707 - VT0
708 - VT1
551 + The actual delays depend on line speed and system load.
709 552
710 -
711 - FFDLY
712 - Select form feed delays:
713 - FF0
714 - FF1
715 -
716 -
717 -
718 - If OPOST is set, output characters are post-processed as indicated by
719 - the remaining flags; otherwise, characters are transmitted without
720 - change.
721 -
722 -
723 - If OLCUC is set, a lower case alphabetic character is transmitted as
724 - the corresponding upper case character. This function is often used in
725 - conjunction with IUCLC.
726 -
727 -
728 - If ONLCR is set, the NL character is transmitted as the CR-NL character
729 - pair. If OCRNL is set, the CR character is transmitted as the NL
730 - character. If ONOCR is set, no CR character is transmitted when at
731 - column 0 (first position). If ONRET is set, the NL character is
732 - assumed to do the carriage-return function; the column pointer is set
733 - to 0 and the delays specified for CR are used. Otherwise, the NL
734 - character is assumed to do just the line-feed function; the column
735 - pointer remains unchanged. The column pointer is also set to 0 if the
736 - CR character is actually transmitted.
737 -
738 -
739 - The delay bits specify how long transmission stops to allow for
740 - mechanical or other movement when certain characters are sent to the
741 - terminal. In all cases, a value of 0 indicates no delay. If OFILL is
742 - set, fill characters are transmitted for delay instead of a timed
743 - delay. This is useful for high baud rate terminals that need only a
744 - minimal delay. If OFDEL is set, the fill character is DEL ; otherwise
745 - it is NULL.
746 -
747 -
748 - If a form-feed or vertical-tab delay is specified, it lasts for about 2
749 - seconds.
750 -
751 -
752 - Newline delay lasts about 0.10 seconds. If ONLRET is set, the carriage-
753 - return delays are used instead of the newline delays. If OFILL is set,
754 - two fill characters are transmitted.
755 -
756 -
757 - Carriage-return delay type 1 is dependent on the current column
758 - position, type 2 is about 0.10 seconds, and type 3 is about 0.15
759 - seconds. If OFILL is set, delay type 1 transmits two fill characters,
760 - and type 2 transmits four fill characters.
761 -
762 -
763 - Horizontal-tab delay type 1 is dependent on the current column
764 - position. Type 2 is about 0.10 seconds. Type 3 specifies that tabs are
765 - to be expanded into spaces. If OFILL is set, two fill characters are
766 - transmitted for any delay.
767 -
768 -
769 - Backspace delay lasts about 0.05 seconds. If OFILL is set, one fill
770 - character is transmitted.
771 -
772 -
773 - The actual delays depend on line speed and system load.
774 -
775 553 Control Modes
776 - The c_cflag field describes the hardware control of the terminal:
554 + The c_cflag field describes the hardware control of the terminal:
777 555
778 - CBAUD
779 - Baud rate:
556 + CBAUD Baud rate:
557 + B0 Hang up
558 + B50 50 baud
559 + B75 75 baud
560 + B110 110 baud
561 + B134 134 baud
562 + B150 150 baud
563 + B200 200 baud
564 + B300 300 baud
565 + B600 600 baud
566 + B1200 1200 baud
567 + B1800 1800 baud
568 + B2400 2400 baud
569 + B4800 4800 baud
570 + B9600 9600 baud
571 + B19200 19200 baud
572 + EXTA External A
573 + B38400 38400 baud
574 + EXTB External B
575 + B57600 57600 baud
576 + B76800 76800 baud
577 + B115200 115200 baud
578 + B153600 153600 baud
579 + B230400 230400 baud
580 + B307200 307200 baud
581 + B460800 460800 baud
780 582
583 + CSIZE Character size:
584 + CS5 5 bits
585 + CS6 6 bits
586 + CS7 7 bits
587 + CS8 8 bits
588 + CSTOPB Send two stop bits, else one
589 + CREAD Enable receiver
590 + PARENB Parity enable
591 + PARODD Odd parity, else even
592 + HUPCL Hang up on last close
593 + CLOCAL Local line, else dial-up
594 + CIBAUD Input baud rate, if different from output rate
595 + PAREXT Extended parity for mark and space parity
596 + CRTSXOFF Enable inbound hardware flow control
597 + CRTSCTS Enable outbound hardware flow control
598 + CBAUDEXT Bit to indicate output speed > B38400
599 + CIBAUDEXT Bit to indicate input speed > B38400
781 600
782 - B0
783 - Hang up
601 + The CBAUD bits together with the CBAUDEXT bit specify the output baud
602 + rate. To retrieve the output speed from the termios structure pointed to
603 + by termios_p see the following code segment.
784 604
605 + speed_t ospeed;
606 + if (termios_p->c_cflag & CBAUDEXT)
607 + ospeed = (termios_p->c_cflag & CBAUD) + CBAUD + 1;
608 + else
609 + ospeed = termios_p->c_cflag & CBAUD;
785 610
786 - B50
787 - 50 baud
611 + To store the output speed in the termios structure pointed to by
612 + termios_p see the following code segment.
788 613
614 + speed_t ospeed;
615 + if (ospeed > CBAUD) {
616 + termios_p->c_cflag |= CBAUDEXT;
617 + ospeed -= (CBAUD + 1);
618 + } else {
619 + termios_p->c_cflag &= ~CBAUDEXT;
620 + }
621 + termios_p->c_cflag =
622 + (termios_p->c_cflag & ~CBAUD) | (ospeed & CBAUD);
789 623
790 - B75
791 - 75 baud
624 + The zero baud rate, B0, is used to hang up the connection. If B0 is
625 + specified, the data-terminal-ready signal is not asserted. Normally,
626 + this disconnects the line.
792 627
628 + If the CIBAUDEXT or CIBAUD bits are not zero, they specify the input baud
629 + rate, with the CBAUDEXT and CBAUD bits specifying the output baud rate;
630 + otherwise, the output and input baud rates are both specified by the
631 + CBAUDEXT and CBAUD bits. The values for the CIBAUD bits are the same as
632 + the values for the CBAUD bits, shifted left IBSHIFT bits. For any
633 + particular hardware, impossible speed changes are ignored. To retrieve
634 + the input speed in the termios structure pointed to by termios_p see the
635 + following code segment.
793 636
794 - B110
795 - 110 baud
637 + speed_t ispeed;
638 + if (termios_p->c_cflag & CIBAUDEXT) {
639 + ispeed = ((termios_p->c_cflag & CIBAUD) >> IBSHIFT)
640 + + (CIBAUD >> IBSHIFT) + 1;
641 + } else {
642 + ispeed = (termios_p->c_cflag & CIBAUD) >> IBSHIFT;
643 + }
796 644
645 + To store the input speed in the termios structure pointed to by termios_p
646 + see the following code segment.
797 647
798 - B134
799 - 134 baud
800 -
801 -
802 - B150
803 - 150 baud
804 -
805 -
806 - B200
807 - 200 baud
808 -
809 -
810 - B300
811 - 300 baud
812 -
813 -
814 - B600
815 - 600 baud
816 -
817 -
818 - B1200
819 - 1200 baud
820 -
821 -
822 - B1800
823 - 1800 baud
824 -
825 -
826 - B2400
827 - 2400 baud
828 -
829 -
830 - B4800
831 - 4800 baud
832 -
833 -
834 - B9600
835 - 9600 baud
836 -
837 -
838 - B19200
839 - 19200 baud
840 -
841 -
842 - EXTA
843 - External A
844 -
845 -
846 - B38400
847 - 38400 baud
848 -
849 -
850 - EXTB
851 - External B
852 -
853 -
854 - B57600
855 - 57600 baud
856 -
857 -
858 - B76800
859 - 76800 baud
860 -
861 -
862 - B115200
863 - 115200 baud
864 -
865 -
866 - B153600
867 - 153600 baud
868 -
869 -
870 - B230400
871 - 230400 baud
872 -
873 -
874 - B307200
875 - 307200 baud
876 -
877 -
878 - B460800
879 - 460800 baud
880 -
881 -
882 - CSIZE
883 - Character size:
884 -
885 -
886 - CS5
887 - 5 bits
888 -
889 -
890 - CS6
891 - 6 bits
892 -
893 -
894 - CS7
895 - 7 bits
896 -
897 -
898 - CS8
899 - 8 bits
900 -
901 -
902 - CSTOPB
903 - Send two stop bits, else one
904 -
905 -
906 - CREAD
907 - Enable receiver
908 -
909 -
910 - PARENB
911 - Parity enable
912 -
913 -
914 - PARODD
915 - Odd parity, else even
916 -
917 -
918 - HUPCL
919 - Hang up on last close
920 -
921 -
922 - CLOCAL
923 - Local line, else dial-up
924 -
925 -
926 - CIBAUD
927 - Input baud rate, if different from output rate
928 -
929 -
930 - PAREXT
931 - Extended parity for mark and space parity
932 -
933 -
934 - CRTSXOFF
935 - Enable inbound hardware flow control
936 -
937 -
938 - CRTSCTS
939 - Enable outbound hardware flow control
940 -
941 -
942 - CBAUDEXT
943 - Bit to indicate output speed > B38400
944 -
945 -
946 - CIBAUDEXT
947 - Bit to indicate input speed > B38400
948 -
949 -
950 -
951 - The CBAUD bits together with the CBAUDEXT bit specify the output baud
952 - rate. To retrieve the output speed from the termios structure pointed
953 - to by termios_p see the following code segment.
954 -
955 - speed_t ospeed;
956 - if (termios_p->c_cflag & CBAUDEXT)
957 - ospeed = (termios_p->c_cflag & CBAUD) + CBAUD + 1;
958 - else
959 - ospeed = termios_p->c_cflag & CBAUD;
960 -
961 -
962 -
963 - To store the output speed in the termios structure pointed to by
964 - termios_p see the following code segment.
965 -
966 - speed_t ospeed;
967 - if (ospeed > CBAUD) {
968 - termios_p->c_cflag |= CBAUDEXT;
969 - ospeed -= (CBAUD + 1);
970 - } else
971 - termios_p->c_cflag &= ~CBAUDEXT;
972 - termios_p->c_cflag =
973 - (termios_p->c_cflag & ~CBAUD) | (ospeed & CBAUD);
974 -
975 -
976 -
977 - The zero baud rate, B0, is used to hang up the connection. If B0 is
978 - specified, the data-terminal-ready signal is not asserted. Normally,
979 - this disconnects the line.
980 -
981 -
982 - If the CIBAUDEXT or CIBAUD bits are not zero, they specify the input
983 - baud rate, with the CBAUDEXT and CBAUD bits specifying the output baud
984 - rate; otherwise, the output and input baud rates are both specified by
985 - the CBAUDEXT and CBAUD bits. The values for the CIBAUD bits are the
986 - same as the values for the CBAUD bits, shifted left IBSHIFT bits. For
987 - any particular hardware, impossible speed changes are ignored. To
988 - retrieve the input speed in the termios structure pointed to by
989 - termios_p see the following code segment.
990 -
991 - speed_t ispeed;
992 - if (termios_p->c_cflag & CIBAUDEXT)
993 - ispeed = ((termios_p->c_cflag & CIBAUD) >> IBSHIFT)
994 - + (CIBAUD >> IBSHIFT) + 1;
995 - else
996 - ispeed = (termios_p->c_cflag & CIBAUD) >> IBSHIFT;
997 -
998 -
999 -
1000 - To store the input speed in the termios structure pointed to by
1001 - termios_p see the following code segment.
1002 -
1003 - speed_t ispeed;
1004 - if (ispeed == 0) {
1005 - ispeed = termios_p->c_cflag & CBAUD;
1006 - if (termios_p->c_cflag & CBAUDEXT)
648 + speed_t ispeed;
649 + if (ispeed == 0) {
650 + ispeed = termios_p->c_cflag & CBAUD;
651 + if (termios_p->c_cflag & CBAUDEXT)
1007 652 ispeed += (CBAUD + 1);
1008 - }
1009 - if ((ispeed << IBSHIFT) > CIBAUD) {
1010 - termios_p->c_cflag |= CIBAUDEXT;
1011 - ispeed -= ((CIBAUD >> IBSHIFT) + 1);
1012 - } else
1013 - termios_p->c_cflag &= ~CIBAUDEXT;
1014 - termios_p->c_cflag =
1015 - (termios_p->c_cflag & ~CIBAUD) |
1016 - ((ispeed << IBSHIFT) & CIBAUD);
653 + }
654 + if ((ispeed << IBSHIFT) > CIBAUD) {
655 + termios_p->c_cflag |= CIBAUDEXT;
656 + ispeed -= ((CIBAUD >> IBSHIFT) + 1);
657 + } else {
658 + termios_p->c_cflag &= ~CIBAUDEXT;
659 + }
660 + termios_p->c_cflag =
661 + (termios_p->c_cflag & ~CIBAUD) | ((ispeed << IBSHIFT) & CIBAUD);
1017 662
663 + The CSIZE bits specify the character size in bits for both transmission
664 + and reception. This size does not include the parity bit, if any. If
665 + CSTOPB is set, two stop bits are used; otherwise, one stop bit is used.
666 + For example, at 110 baud, two stops bits are required.
1018 667
668 + If PARENB is set, parity generation and detection is enabled, and a
669 + parity bit is added to each character. If parity is enabled, the PARODD
670 + flag specifies odd parity if set; otherwise, even parity is used.
1019 671
1020 - The CSIZE bits specify the character size in bits for both transmission
1021 - and reception. This size does not include the parity bit, if any. If
1022 - CSTOPB is set, two stop bits are used; otherwise, one stop bit is used.
1023 - For example, at 110 baud, two stops bits are required.
672 + If CREAD is set, the receiver is enabled. Otherwise, no characters are
673 + received.
1024 674
675 + If HUPCL is set, the line is disconnected when the last process with the
676 + line open closes it or terminates. That is, the data-terminal-ready
677 + signal is not asserted.
1025 678
1026 - If PARENB is set, parity generation and detection is enabled, and a
1027 - parity bit is added to each character. If parity is enabled, the PARODD
1028 - flag specifies odd parity if set; otherwise, even parity is used.
679 + If CLOCAL is set, the line is assumed to be a local, direct connection
680 + with no modem control; otherwise, modem control is assumed.
1029 681
682 + If CRTSXOFF is set, inbound hardware flow control is enabled.
1030 683
1031 - If CREAD is set, the receiver is enabled. Otherwise, no characters are
1032 - received.
684 + If CRTSCTS is set, outbound hardware flow control is enabled.
1033 685
686 + The four possible combinations for the state of CRTSCTS and CRTSXOFF bits
687 + and their interactions are described below.
1034 688
1035 - If HUPCL is set, the line is disconnected when the last process with
1036 - the line open closes it or terminates. That is, the data-terminal-ready
1037 - signal is not asserted.
689 + Case A: CRTSCTS off, CRTSXOFF off. In this case the hardware flow
690 + control is disabled.
1038 691
692 + Case B: CRTSCTS on, CRTSXOFF off. In this case only outbound hardware
693 + flow control is enabled. The state of CTS signal is used to do
694 + outbound flow control. It is expected that output will be
695 + suspended if CTS is low and resumed when CTS is high.
1039 696
1040 - If CLOCAL is set, the line is assumed to be a local, direct connection
1041 - with no modem control; otherwise, modem control is assumed.
697 + Case C: CRTSCTS off, CRTSXOFF on. In this case only inbound hardware
698 + flow control is enabled. The state of RTS signal is used to do
699 + inbound flow control. It is expected that input will be
700 + suspended if RTS is low and resumed when RTS is high.
1042 701
702 + Case D: CRTSCTS on, CRTSXOFF on. In this case both inbound and outbound
703 + hardware flow control are enabled. Uses the state of CTS signal
704 + to do outbound flow control and RTS signal to do inbound flow
705 + control.
1043 706
1044 - If CRTSXOFF is set, inbound hardware flow control is enabled.
1045 -
1046 -
1047 - If CRTSCTS is set, outbound hardware flow control is enabled.
1048 -
1049 -
1050 - The four possible combinations for the state of CRTSCTS and CRTSXOFF
1051 - bits and their interactions are described below.
1052 -
1053 - Case A:
1054 - CRTSCTS off, CRTSXOFF off. In this case the hardware flow
1055 - control is disabled.
1056 -
1057 -
1058 - Case B:
1059 - CRTSCTS on, CRTSXOFF off. In this case only outbound
1060 - hardware flow control is enabled. The state of CTS signal is
1061 - used to do outbound flow control. It is expected that output
1062 - will be suspended if CTS is low and resumed when CTS is
1063 - high.
1064 -
1065 -
1066 - Case C:
1067 - CRTSCTS off, CRTSXOFF on. In this case only inbound hardware
1068 - flow control is enabled. The state of RTS signal is used to
1069 - do inbound flow control. It is expected that input will be
1070 - suspended if RTS is low and resumed when RTS is high.
1071 -
1072 -
1073 - Case D:
1074 - CRTSCTS on, CRTSXOFF on. In this case both inbound and
1075 - outbound hardware flow control are enabled. Uses the state
1076 - of CTS signal to do outbound flow control and RTS signal to
1077 - do inbound flow control.
1078 -
1079 -
1080 707 Local Modes
1081 - The c_lflag field of the argument structure is used by the line
1082 - discipline to control terminal functions. The basic line discipline
1083 - provides the following:
708 + The c_lflag field of the argument structure is used by the line
709 + discipline to control terminal functions. The basic line discipline
710 + provides the following:
1084 711
1085 - ISIG
1086 - Enable signals.
712 + ISIG Enable signals.
713 + ICANON Canonical input (erase and kill processing).
714 + XCASE Canonical upper/lower presentation.
715 + ECHO Enable echo.
716 + ECHOE Echo erase character as BS-SP-BS &.
717 + ECHOK Echo NL after kill character.
718 + ECHONL Echo NL.
719 + NOFLSH Disable flush after interrupt or quit.
720 + TOSTOP Send
721 + SIGTTOU for background output.
722 + ECHOCTL Echo control characters as char, delete as ^?.
723 + ECHOPRT Echo erase character as character erased.
724 + ECHOKE BS-SP-BS erase entire line on line kill.
725 + FLUSHO Output is being flushed.
726 + PENDIN Retype pending input at next read or input character.
727 + IEXTEN Enable extended (implementation-defined) functions.
1087 728
729 + If ISIG is set, each input character is checked against the special
730 + control characters INTR, QUIT, SWTCH, SUSP, STATUS, and DSUSP. If an
731 + input character matches one of these control characters, the function
732 + associated with that character is performed. (Note: If SWTCH is set and
733 + the character matches, the character is simply discarded. No other
734 + action is taken.) If ISIG is not set, no checking is done. Thus, these
735 + special input functions are possible only if ISIG is set.
1088 736
1089 - ICANON
1090 - Canonical input (erase and kill processing).
737 + If ICANON is set, canonical processing is enabled. This enables the
738 + erase and kill edit functions, and the assembly of input characters into
739 + lines delimited by NL-c, EOF, EOL, and EOL. If ICANON is not set, read
740 + requests are satisfied directly from the input queue. A read is not
741 + satisfied until at least MIN characters have been received or the timeout
742 + value TIME has expired between characters. This allows fast bursts of
743 + input to be read efficiently while still allowing single character input.
744 + The time value represents tenths of seconds.
1091 745
746 + If XCASE is set and ICANON is set, an upper case letter is accepted on
747 + input if preceded by a backslash `\' character, and is output preceded by
748 + a backslash `\' character. In this mode, the following escape sequences
749 + are generated on output and accepted on input:
1092 750
1093 - XCASE
1094 - Canonical upper/lower presentation.
751 + FOR: USE:
752 + ` \'
753 + | \!
754 + ~ \^
755 + { \(
756 + } \)
757 + \ \\
1095 758
759 + For example, input A as \a, \n as \\n, and \N as \\\n.
1096 760
1097 - ECHO
1098 - Enable echo.
761 + If ECHO is set, characters are echoed as received.
1099 762
763 + When ICANON is set, the following echo functions are possible.
1100 764
1101 - ECHOE
1102 - Echo erase character as BS-SP-BS &.
765 + o If ECHO and ECHOE are set, and ECHOPRT is not set, the ERASE,
766 + ERASE2, and WERASE characters are echoed as one or more ASCII
767 + BS SP BS, which clears the last character(s) from a CRT screen.
1103 768
769 + o If ECHO, ECHOPRT, and IEXTEN are set, the first ERASE, ERASE2,
770 + and WERASE character in a sequence echoes as a backslash `\',
771 + followed by the characters being erased. Subsequent ERASE and
772 + WERASE characters echo the characters being erased, in reverse
773 + order. The next non-erase character causes a `/' (slash) to be
774 + typed before it is echoed. ECHOPRT should be used for hard
775 + copy terminals.
1104 776
1105 - ECHOK
1106 - Echo NL after kill character.
777 + o If ECHOKE and IEXTEN are set, the kill character is echoed by
778 + erasing each character on the line from the screen (using the
779 + mechanism selected by ECHOE and ECHOPR).
1107 780
781 + o If ECHOK is set, and ECHOKE is not set, the NL character is
782 + echoed after the kill character to emphasize that the line is
783 + deleted. Note that a `\' (escape) character or an LNEXT
784 + character preceding the erase or kill character removes any
785 + special function.
1108 786
1109 - ECHONL
1110 - Echo NL .
787 + o If ECHONL is set, the NL character is echoed even if ECHO is
788 + not set. This is useful for terminals set to local echo (so
789 + called half-duplex).
1111 790
791 + If ECHOCTL and IEXTEN are set, all control characters (characters with
792 + codes between 0 and 37 octal) other than ASCII TAB, ASCII NL, the START
793 + character, and the STOP character, ASCII CR, and ASCII BS are echoed as
794 + ^X, where X is the character given by adding `100' octal to the code of
795 + the control character (so that the character with octal code `1' is
796 + echoed as ^A), and the ASCII DEL character, with code `177' octal, is
797 + echoed as ^?.
1112 798
1113 - NOFLSH
1114 - Disable flush after interrupt or quit.
799 + If NOFLSH is set, the normal flush of the input and output queues
800 + associated with the INTR, QUIT, STATUS, and SUSP characters is not done.
801 + This bit should be set when restarting system calls that read from or
802 + write to a terminal (see sigaction(2)).
1115 803
804 + If TOSTOP and IEXTEN are set, the signal SIGTTOU is sent to a process
805 + that tries to write to its controlling terminal if it is not in the
806 + foreground process group for that terminal. This signal normally stops
807 + the process. Otherwise, the output generated by that process is output
808 + to the current output stream. Processes that are blocking or ignoring
809 + SIGTTOU signals are excepted and allowed to produce output, if any.
1116 810
1117 - TOSTOP
1118 - Send SIGTTOU for background output.
811 + If FLUSHO and IEXTEN are set, data written to the terminal is discarded.
812 + This bit is set when the FLUSH character is typed. A program can cancel
813 + the effect of typing the FLUSH character by clearing FLUSHO.
1119 814
815 + If PENDIN and IEXTEN are set, any input that has not yet been read is
816 + reprinted when the next character arrives as input. PENDIN is then
817 + automatically cleared.
1120 818
1121 - ECHOCTL
1122 - Echo control characters as char, delete as ^?.
819 + If IEXTEN is set, the following implementation-defined functions are
820 + enabled: special characters ( WERASE, REPRINT, DISCARD, and LNEXT) and
821 + local flags ( TOSTOP, ECHOCTL, ECHOPRT, ECHOKE, FLUSHO, and PENDIN).
1123 822
1124 -
1125 - ECHOPRT
1126 - Echo erase character as character erased.
1127 -
1128 -
1129 - ECHOKE
1130 - BS-SP-BS erase entire line on line kill.
1131 -
1132 -
1133 - FLUSHO
1134 - Output is being flushed.
1135 -
1136 -
1137 - PENDIN
1138 - Retype pending input at next read or input character.
1139 -
1140 -
1141 - IEXTEN
1142 - Enable extended (implementation-defined) functions.
1143 -
1144 -
1145 -
1146 - If ISIG is set, each input character is checked against the special
1147 - control characters INTR, QUIT, SWTCH, SUSP, STATUS, and DSUSP. If an
1148 - input character matches one of these control characters, the function
1149 - associated with that character is performed. (Note: If SWTCH is set and
1150 - the character matches, the character is simply discarded. No other
1151 - action is taken.) If ISIG is not set, no checking is done. Thus, these
1152 - special input functions are possible only if ISIG is set.
1153 -
1154 -
1155 - If ICANON is set, canonical processing is enabled. This enables the
1156 - erase and kill edit functions, and the assembly of input characters
1157 - into lines delimited by NL-c, EOF, EOL, and EOL . If ICANON is not
1158 - set, read requests are satisfied directly from the input queue. A read
1159 - is not satisfied until at least MIN characters have been received or
1160 - the timeout value TIME has expired between characters. This allows fast
1161 - bursts of input to be read efficiently while still allowing single
1162 - character input. The time value represents tenths of seconds.
1163 -
1164 -
1165 - If XCASE is set and ICANON is set, an upper case letter is accepted on
1166 - input if preceded by a backslash (\) character, and is output preceded
1167 - by a backslash (\) character. In this mode, the following escape
1168 - sequences are generated on output and accepted on input:
1169 -
1170 -
1171 -
1172 -
1173 - +-----+------+
1174 - |FOR: | USE: |
1175 - +-----+------+
1176 - |` | \' |
1177 - +-----+------+
1178 - || | \! |
1179 - +-----+------+
1180 - |~ | \^ |
1181 - +-----+------+
1182 - |{ | \( |
1183 - +-----+------+
1184 - |} | \) |
1185 - +-----+------+
1186 - |\ | \\ |
1187 - +-----+------+
1188 -
1189 -
1190 - For example, input A as \a, \n as \\n, and \N as \\\n.
1191 -
1192 -
1193 - If ECHO is set, characters are echoed as received.
1194 -
1195 -
1196 - When ICANON is set, the following echo functions are possible.
1197 -
1198 - o If ECHO and ECHOE are set, and ECHOPRT is not set, the
1199 - ERASE, ERASE2, and WERASE characters are echoed as one or
1200 - more ASCII BS SP BS, which clears the last character(s) from
1201 - a CRT screen.
1202 -
1203 - o If ECHO, ECHOPRT, and IEXTEN are set, the first ERASE,
1204 - ERASE2, and WERASE character in a sequence echoes as a
1205 - backslash (\), followed by the characters being erased.
1206 - Subsequent ERASE and WERASE characters echo the characters
1207 - being erased, in reverse order. The next non-erase character
1208 - causes a `/' (slash) to be typed before it is echoed.
1209 - ECHOPRT should be used for hard copy terminals.
1210 -
1211 - o If ECHOKE and IEXTEN are set, the kill character is echoed
1212 - by erasing each character on the line from the screen
1213 - (using the mechanism selected by ECHOE and ECHOPRa).
1214 -
1215 - o If ECHOK is set, and ECHOKE is not set, the NL character is
1216 - echoed after the kill character to emphasize that the line
1217 - is deleted. Note that a `' (escape) character or an LNEXT
1218 - character preceding the erase or kill character removes any
1219 - special function.
1220 -
1221 - o If ECHONL is set, the NL character is echoed even if ECHO
1222 - is not set. This is useful for terminals set to local echo
1223 - (so called half-duplex).
1224 -
1225 -
1226 - If ECHOCTL and IEXTEN are set, all control characters (characters with
1227 - codes between 0 and 37 octal) other than ASCII TAB, ASCII NL, the
1228 - START character, and the STOP character, ASCII CR, and ASCII BS are
1229 - echoed as ^ X, where X is the character given by adding 100 octal to
1230 - the code of the control character (so that the character with octal
1231 - code 1 is echoed as ^ A), and the ASCII DEL character, with code 177
1232 - octal, is echoed as ^ ?.
1233 -
1234 -
1235 - If NOFLSH is set, the normal flush of the input and output queues
1236 - associated with the INTR, QUIT, STATUS, and SUSP characters is not
1237 - done. This bit should be set when restarting system calls that read
1238 - from or write to a terminal (see sigaction(2)).
1239 -
1240 -
1241 - If TOSTOP and IEXTEN are set, the signal SIGTTOU is sent to a process
1242 - that tries to write to its controlling terminal if it is not in the
1243 - foreground process group for that terminal. This signal normally stops
1244 - the process. Otherwise, the output generated by that process is output
1245 - to the current output stream. Processes that are blocking or ignoring
1246 - SIGTTOU signals are excepted and allowed to produce output, if any.
1247 -
1248 -
1249 - If FLUSHO and IEXTEN are set, data written to the terminal is
1250 - discarded. This bit is set when the FLUSH character is typed. A program
1251 - can cancel the effect of typing the FLUSH character by clearing FLUSHO.
1252 -
1253 -
1254 - If PENDIN and IEXTEN are set, any input that has not yet been read is
1255 - reprinted when the next character arrives as input. PENDIN is then
1256 - automatically cleared.
1257 -
1258 -
1259 - If IEXTEN is set, the following implementation-defined functions are
1260 - enabled: special characters ( WERASE, REPRINT, DISCARD, and LNEXT) and
1261 - local flags ( TOSTOP, ECHOCTL, ECHOPRT, ECHOKE, FLUSHO, and PENDIN).
1262 -
1263 823 Minimum and Timeout
1264 - The MIN and TIME values were described previously, in the subsection,
1265 - Non-canonical Mode Input Processing. The initial value of MIN is 1, and
1266 - the initial value of TIME is 0.
824 + The MIN and TIME values were described previously, in the subsection,
825 + Non-canonical Mode Input Processing. The initial value of MIN is 1, and
826 + the initial value of TIME is 0.
1267 827
1268 828 Terminal Size
1269 - The number of lines and columns on the terminal's display is specified
1270 - in the winsize structure defined by sys/termios.h and includes the
1271 - following members:
829 + The number of lines and columns on the terminal's display is specified in
830 + the winsize structure defined by <sys/termios.h> and includes the
831 + following members:
1272 832
1273 - unsigned short ws_row; /* rows, in characters */
1274 - unsigned shortws_col; /* columns, in characters */
1275 - unsigned shortws_xpixel; /* horizontal size, in pixels */
1276 - unsigned shortws_ypixel; /* vertical size, in pixels */
833 + unsigned short ws_row; /* rows, in characters */
834 + unsigned short ws_col; /* columns, in characters */
835 + unsigned short ws_xpixel; /* horizontal size, in pixels */
836 + unsigned short ws_ypixel; /* vertical size, in pixels */
1277 837
1278 -
1279 838 Termio Structure
1280 - The SunOS/SVR4 termio structure is used by some ioctls; it is defined
1281 - by sys/termio.h and includes the following members:
839 + The SunOS/SVR4 termio structure is used by some ioctl()s; it is defined
840 + by <sys/termio.h> and includes the following members:
1282 841
1283 - unsigned shortc_iflag; /* input modes */
1284 - unsigned shortc_oflag; /* output modes */
1285 - unsigned shortc_cflag; /* control modes */
1286 - unsigned short c_lflag; /* local modes */
1287 - char c_line; /* line discipline */
1288 - unsigned char c_cc[NCC]; /* control chars */
842 + unsigned short c_iflag; /* input modes */
843 + unsigned short c_oflag; /* output modes */
844 + unsigned short c_cflag; /* control modes */
845 + unsigned short c_lflag; /* local modes */
846 + char c_line; /* line discipline */
847 + unsigned char c_cc[NCC]; /* control chars */
1289 848
849 + The special control characters are defined by the array c_cc. The
850 + symbolic name NCC is the size of the Control-character array and is also
851 + defined by <termio.h>. The relative positions, subscript names, and
852 + typical default values for each function are as follows:
1290 853
854 + Relative Positions Subscript Names Typical Default Values
855 + 0 VINTR EXT
856 + 1 VQUIT FS
857 + 2 VERASE DEL
858 + 3 VKILL NAK
859 + 4 VEOF EOT
860 + 5 VEOL NUL
861 + 6 VEOL2 NUL
862 + 7 Reserved
1291 863
1292 - The special control characters are defined by the array c_cc. The
1293 - symbolic name NCC is the size of the Control-character array and is
1294 - also defined by termio.h. The relative positions, subscript names, and
1295 - typical default values for each function are as follows:
864 + The MIN values is stored in the VMIN element of the c_cc array; the TIME
865 + value is stored in the VTIME element of the c_cc array. The VMIN element
866 + is the same element as the VEOF element; the VTIME element is the same
867 + element as the VEOL element.
1296 868
869 + The calls that use the termio structure only affect the flags and control
870 + characters that can be stored in the termio structure; all other flags
871 + and control characters are unaffected.
1297 872
1298 -
1299 -
1300 - +-------------------+-----------------+------------------------+
1301 - |Relative Positions | Subscript Names | Typical Default Values |
1302 - +-------------------+-----------------+------------------------+
1303 - |0 | VINTR | EXT |
1304 - +-------------------+-----------------+------------------------+
1305 - |1 | VQUIT | FS |
1306 - +-------------------+-----------------+------------------------+
1307 - |2 | VERASE | DEL |
1308 - +-------------------+-----------------+------------------------+
1309 - |3 | VKILL | NAK |
1310 - +-------------------+-----------------+------------------------+
1311 - |4 | VEOF | EOT |
1312 - +-------------------+-----------------+------------------------+
1313 - |5 | VEOL | NUL |
1314 - +-------------------+-----------------+------------------------+
1315 - |6 | VEOL2 | NUL |
1316 - +-------------------+-----------------+------------------------+
1317 - |7 | Reserved | |
1318 - +-------------------+-----------------+------------------------+
1319 -
1320 -
1321 - The MIN values is stored in the VMIN element of the c_cc array; the
1322 - TIME value is stored in the VTIME element of the c_cc array. The VMIN
1323 - element is the same element as the VEOF element; the VTIME element is
1324 - the same element as the VEOL element.
1325 -
1326 -
1327 - The calls that use the termio structure only affect the flags and
1328 - control characters that can be stored in the termio structure; all
1329 - other flags and control characters are unaffected.
1330 -
1331 873 Modem Lines
1332 - On special files representing serial ports, modem control lines can be
1333 - read. Control lines (if the underlying hardware supports it) may also
1334 - be changed. Status lines are read-only. The following modem control
1335 - and status lines may be supported by a device; they are defined by
1336 - sys/termios.h:
874 + On special files representing serial ports, modem control lines can be
875 + read. Control lines (if the underlying hardware supports it) may also be
876 + changed. Status lines are read-only. The following modem control and
877 + status lines may be supported by a device; they are defined by
878 + <sys/termios.h>:
1337 879
1338 - TIOCM_LE
1339 - line enable
880 + TIOCM_LE line enable
881 + TIOCM_DTR data terminal ready
882 + TIOCM_RTS request to send
883 + TIOCM_ST secondary transmit
884 + TIOCM_SR secondary receive
885 + TIOCM_CTS clear to send
886 + TIOCM_CAR carrier detect
887 + TIOCM_RNG ring
888 + TIOCM_DSR data set ready
1340 889
890 + TIOCM_CD is a synonym for TIOCM_CAR, and TIOCM_RI is a synonym for
891 + TIOCM_RNG. Not all of these are necessarily supported by any particular
892 + device; check the manual page for the device in question.
1341 893
1342 - TIOCM_DTR
1343 - data terminal ready
894 + The software carrier mode can be enabled or disabled using the
895 + TIOCSSOFTCAR ioctl(). If the software carrier flag for a line is off,
896 + the line pays attention to the hardware carrier detect (DCD) signal. The
897 + tty device associated with the line cannot be opened until DCD is
898 + asserted. If the software carrier flag is on, the line behaves as if DCD
899 + is always asserted.
1344 900
901 + The software carrier flag is usually turned on for locally connected
902 + terminals or other devices, and is off for lines with modems.
1345 903
1346 - TIOCM_RTS
1347 - request to send
904 + To be able to issue the TIOCGSOFTCAR and TIOCSSOFTCAR ioctl() calls, the
905 + tty line should be opened with O_NDELAY so that the open(2) will not wait
906 + for the carrier.
1348 907
1349 -
1350 - TIOCM_ST
1351 - secondary transmit
1352 -
1353 -
1354 - TIOCM_SR
1355 - secondary receive
1356 -
1357 -
1358 - TIOCM_CTS
1359 - clear to send
1360 -
1361 -
1362 - TIOCM_CAR
1363 - carrier detect
1364 -
1365 -
1366 - TIOCM_RNG
1367 - ring
1368 -
1369 -
1370 - TIOCM_DSR
1371 - data set ready
1372 -
1373 -
1374 -
1375 - TIOCM_CD is a synonym for TIOCM_CAR, and TIOCM_RI is a synonym for
1376 - TIOCM_RNG. Not all of these are necessarily supported by any particular
1377 - device; check the manual page for the device in question.
1378 -
1379 -
1380 - The software carrier mode can be enabled or disabled using the
1381 - TIOCSSOFTCAR ioctl. If the software carrier flag for a line is off, the
1382 - line pays attention to the hardware carrier detect (DCD) signal. The
1383 - tty device associated with the line cannot be opened until DCD is
1384 - asserted. If the software carrier flag is on, the line behaves as if
1385 - DCD is always asserted.
1386 -
1387 -
1388 - The software carrier flag is usually turned on for locally connected
1389 - terminals or other devices, and is off for lines with modems.
1390 -
1391 -
1392 - To be able to issue the TIOCGSOFTCAR and TIOCSSOFTCAR ioctl calls, the
1393 - tty line should be opened with O_NDELAY so that the open(2) will not
1394 - wait for the carrier.
1395 -
1396 908 Default Values
1397 - The initial termios values upon driver open is configurable. This is
1398 - accomplished by setting the "ttymodes" property in the file
1399 - /kernel/drv/options.conf. Since this property is assigned during system
1400 - initialization, any change to the "ttymodes" property will not take
1401 - effect until the next reboot. The string value assigned to this
1402 - property should be in the same format as the output of the stty(1)
1403 - command with the -g option.
909 + The initial termios values upon driver open is configurable. This is
910 + accomplished by setting the "ttymodes" property in the file
911 + /kernel/drv/options.conf. Since this property is assigned during system
912 + initialization, any change to the "ttymodes" property will not take
913 + effect until the next reboot. The string value assigned to this property
914 + should be in the same format as the output of the stty(1) command with
915 + the -g option.
1404 916
917 + If this property is undefined, the following termios modes are in effect.
918 + The initial input control value is BRKINT, ICRNL, IXON, IMAXBEL. The
919 + initial output control value is OPOST, ONLCR, TAB3. The initial hardware
920 + control value is B9600, CS8, CREAD. The initial line-discipline control
921 + value is ISIG, ICANON, IEXTEN, ECHO, ECHOK, ECHOE, ECHOKE, ECHOCTL.
1405 922
1406 - If this property is undefined, the following termios modes are in
1407 - effect. The initial input control value is BRKINT, ICRNL, IXON,
1408 - IMAXBEL. The initial output control value is OPOST, ONLCR, TAB3. The
1409 - initial hardware control value is B9600, CS8, CREAD. The initial line-
1410 - discipline control value is ISIG, ICANON, IEXTEN, ECHO, ECHOK, ECHOE,
1411 - ECHOKE, ECHOCTL.
1412 -
1413 923 IOCTLS
1414 - The ioctls supported by devices and STREAMS modules providing the
1415 - termios(3C) interface are listed below. Some calls may not be supported
1416 - by all devices or modules. The functionality provided by these calls
1417 - is also available through the preferred function call interface
1418 - specified on termios.
924 + The ioctl()s supported by devices and STREAMS modules providing the
925 + termios(3C) interface are listed below. Some calls may not be supported
926 + by all devices or modules. The functionality provided by these calls is
927 + also available through the preferred function call interface specified on
928 + termios.
1419 929
1420 - TCGETS
1421 - The argument is a pointer to a termios structure. The
1422 - current terminal parameters are fetched and stored into
1423 - that structure.
930 + TCGETS The argument is a pointer to a termios structure. The
931 + current terminal parameters are fetched and stored into
932 + that structure.
1424 933
934 + TCSETS The argument is a pointer to a termios structure. The
935 + current terminal parameters are set from the values stored
936 + in that structure. The change is immediate.
1425 937
1426 - TCSETS
1427 - The argument is a pointer to a termios structure. The
1428 - current terminal parameters are set from the values
1429 - stored in that structure. The change is immediate.
938 + TCSETSW The argument is a pointer to a termios structure. The
939 + current terminal parameters are set from the values stored
940 + in that structure. The change occurs after all characters
941 + queued for output have been transmitted. This form should
942 + be used when changing parameters that affect output.
1430 943
944 + TCSETSF The argument is a pointer to a termios structure. The
945 + current terminal parameters are set from the values stored
946 + in that structure. The change occurs after all characters
947 + queued for output have been transmitted; all characters
948 + queued for input are discarded and then the change occurs.
1431 949
1432 - TCSETSW
1433 - The argument is a pointer to a termios structure. The
1434 - current terminal parameters are set from the values
1435 - stored in that structure. The change occurs after all
1436 - characters queued for output have been transmitted.
1437 - This form should be used when changing parameters that
1438 - affect output.
950 + TCGETA The argument is a pointer to a termio structure. The
951 + current terminal parameters are fetched, and those
952 + parameters that can be stored in a termio structure are
953 + stored into that structure.
1439 954
955 + TCSETA The argument is a pointer to a termio structure. Those
956 + terminal parameters that can be stored in a termio
957 + structure are set from the values stored in that structure.
958 + The change is immediate.
1440 959
1441 - TCSETSF
1442 - The argument is a pointer to a termios structure. The
1443 - current terminal parameters are set from the values
1444 - stored in that structure. The change occurs after all
1445 - characters queued for output have been transmitted; all
1446 - characters queued for input are discarded and then the
1447 - change occurs.
960 + TCSETAW The argument is a pointer to a termio structure. Those
961 + terminal parameters that can be stored in a termio
962 + structure are set from the values stored in that structure.
963 + The change occurs after all characters queued for output
964 + have been transmitted. This form should be used when
965 + changing parameters that affect output.
1448 966
967 + TCSETAF The argument is a pointer to a termio structure. Those
968 + terminal parameters that can be stored in a termio
969 + structure are set from the values stored in that structure.
970 + The change occurs after all characters queued for output
971 + have been transmitted; all characters queued for input are
972 + discarded and then the change occurs.
1449 973
1450 - TCGETA
1451 - The argument is a pointer to a termio structure. The
1452 - current terminal parameters are fetched, and those
1453 - parameters that can be stored in a termio structure are
1454 - stored into that structure.
974 + TCSBRK The argument is an int value. Wait for the output to
975 + drain. If the argument is 0, then send a break (zero
976 + valued bits for 0.25 seconds).
1455 977
978 + TCXONC Start/stop control. The argument is an int value. If the
979 + argument is 0, suspend output; if 1, restart suspended
980 + output; if 2, suspend input; if 3, restart suspended input.
1456 981
1457 - TCSETA
1458 - The argument is a pointer to a termio structure. Those
1459 - terminal parameters that can be stored in a termio
1460 - structure are set from the values stored in that
1461 - structure. The change is immediate.
982 + TCFLSH The argument is an int value. If the argument is 0, flush
983 + the input queue; if 1, flush the output queue; if 2, flush
984 + both the input and output queues.
1462 985
986 + TIOCGPGRP The argument is a pointer to a pid_t. Set the value of
987 + that pid_t to the process group ID of the foreground
988 + process group associated with the terminal. See
989 + termios(3C) for a description of TCGETPGRP.
1463 990
1464 - TCSETAW
1465 - The argument is a pointer to a termio structure. Those
1466 - terminal parameters that can be stored in a termio
1467 - structure are set from the values stored in that
1468 - structure. The change occurs after all characters
1469 - queued for output have been transmitted. This form
1470 - should be used when changing parameters that affect
1471 - output.
991 + TIOCSPGRP The argument is a pointer to a pid_t. Associate the
992 + process group whose process group ID is specified by the
993 + value of that pid_t with the terminal. The new process
994 + group value must be in the range of valid process group ID
995 + values. Otherwise, the error EPERM is returned.
1472 996
997 + TIOCGSID The argument is a pointer to a pid_t. The session ID of
998 + the terminal is fetched and stored in the pid_t.
1473 999
1474 - TCSETAF
1475 - The argument is a pointer to a termio structure. Those
1476 - terminal parameters that can be stored in a termio
1477 - structure are set from the values stored in that
1478 - structure. The change occurs after all characters
1479 - queued for output have been transmitted; all characters
1480 - queued for input are discarded and then the change
1481 - occurs.
1000 + TIOCGWINSZ The argument is a pointer to a winsize structure. The
1001 + terminal driver's notion of the terminal size is stored
1002 + into that structure.
1482 1003
1004 + TIOCSWINSZ The argument is a pointer to a winsize structure. The
1005 + terminal driver's notion of the terminal size is set from
1006 + the values specified in that structure. If the new sizes
1007 + are different from the old sizes, a SIGWINCH signal is set
1008 + to the process group of the terminal.
1483 1009
1484 - TCSBRK
1485 - The argument is an int value. Wait for the output to
1486 - drain. If the argument is 0, then send a break (zero
1487 - valued bits for 0.25 seconds).
1010 + TIOCMBIS The argument is a pointer to an int whose value is a mask
1011 + containing modem control lines to be turned on. The
1012 + control lines whose bits are set in the argument are turned
1013 + on; no other control lines are affected.
1488 1014
1015 + TIOCMBIC The argument is a pointer to an int whose value is a mask
1016 + containing modem control lines to be turned off. The
1017 + control lines whose bits are set in the argument are turned
1018 + off; no other control lines are affected.
1489 1019
1490 - TCXONC
1491 - Start/stop control. The argument is an int value. If
1492 - the argument is 0, suspend output; if 1, restart
1493 - suspended output; if 2, suspend input; if 3, restart
1494 - suspended input.
1020 + TIOCMGET The argument is a pointer to an int. The current state of
1021 + the modem status lines is fetched and stored in the int
1022 + pointed to by the argument.
1495 1023
1024 + TIOCMSET The argument is a pointer to an int containing a new set of
1025 + modem control lines. The modem control lines are turned on
1026 + or off, depending on whether the bit for that mode is set
1027 + or clear.
1496 1028
1497 - TCFLSH
1498 - The argument is an int value. If the argument is 0,
1499 - flush the input queue; if 1, flush the output queue; if
1500 - 2, flush both the input and output queues.
1029 + TIOCSPPS The argument is a pointer to an int that determines whether
1030 + pulse-per-second event handling is to be enabled (non-zero)
1031 + or disabled (zero). If a one-pulse-per-second reference
1032 + clock is attached to the serial line's data carrier detect
1033 + input, the local system clock will be calibrated to it. A
1034 + clock with a high error, that is, a deviation of more than
1035 + 25 microseconds per tick, is ignored.
1501 1036
1037 + TIOCGPPS The argument is a pointer to an int, in which the state of
1038 + the even handling is returned. The int is set to a non-
1039 + zero value if pulse-per-second (PPS) handling has been
1040 + enabled. Otherwise, it is set to zero.
1502 1041
1503 - TIOCGPGRP
1504 - The argument is a pointer to a pid_t. Set the value of
1505 - that pid_t to the process group ID of the foreground
1506 - process group associated with the terminal. See
1507 - termios(3C) for a description of TCGETPGRP.
1042 + TIOCGSOFTCAR The argument is a pointer to an int whose value is 1 or 0,
1043 + depending on whether the software carrier detect is turned
1044 + on or off.
1508 1045
1046 + TIOCSSOFTCAR The argument is a pointer to an int whose value is 1 or 0.
1047 + The value of the integer should be 0 to turn off software
1048 + carrier, or 1 to turn it on.
1509 1049
1510 - TIOCSPGRP
1511 - The argument is a pointer to a pid_t. Associate the
1512 - process group whose process group ID is specified by
1513 - the value of that pid_t with the terminal. The new
1514 - process group value must be in the range of valid
1515 - process group ID values. Otherwise, the error EPERM
1516 - is returned.
1050 + TIOCGPPSEV The argument is a pointer to a struct ppsclockev. This
1051 + structure contains the following members:
1517 1052
1053 + struct timeval tv;
1054 + uint32_t serial;
1518 1055
1519 - TIOCGSID
1520 - The argument is a pointer to a pid_t. The session ID of
1521 - the terminal is fetched and stored in the pid_t.
1056 + tv is the system clock timestamp when the event (pulse on
1057 + the DCD pin) occurred. serial is the ordinal of the event,
1058 + which each consecutive event being assigned the next
1059 + ordinal. The first event registered gets a serial value of
1060 + 1. The TIOCGPPSEV returns the last event registered;
1061 + multiple calls will persistently return the same event
1062 + until a new one is registered. In addition to time
1063 + stamping and saving the event, if it is of one-second
1064 + period and of consistently high accuracy, the local system
1065 + clock will automatically calibrate to it.
1522 1066
1523 -
1524 - TIOCGWINSZ
1525 - The argument is a pointer to a winsize structure. The
1526 - terminal driver's notion of the terminal size is stored
1527 - into that structure.
1528 -
1529 -
1530 - TIOCSWINSZ
1531 - The argument is a pointer to a winsize structure. The
1532 - terminal driver's notion of the terminal size is set
1533 - from the values specified in that structure. If the
1534 - new sizes are different from the old sizes, a SIGWINCH
1535 - signal is set to the process group of the terminal.
1536 -
1537 -
1538 - TIOCMBIS
1539 - The argument is a pointer to an int whose value is a
1540 - mask containing modem control lines to be turned on.
1541 - The control lines whose bits are set in the argument
1542 - are turned on; no other control lines are affected.
1543 -
1544 -
1545 - TIOCMBIC
1546 - The argument is a pointer to an int whose value is a
1547 - mask containing modem control lines to be turned off.
1548 - The control lines whose bits are set in the argument
1549 - are turned off; no other control lines are affected.
1550 -
1551 -
1552 - TIOCMGET
1553 - The argument is a pointer to an int. The current state
1554 - of the modem status lines is fetched and stored in the
1555 - int pointed to by the argument.
1556 -
1557 -
1558 - TIOCMSET
1559 - The argument is a pointer to an int containing a new
1560 - set of modem control lines. The modem control lines are
1561 - turned on or off, depending on whether the bit for that
1562 - mode is set or clear.
1563 -
1564 -
1565 - TIOCSPPS
1566 - The argument is a pointer to an int that determines
1567 - whether pulse-per-second event handling is to be
1568 - enabled (non-zero) or disabled (zero). If a one-pulse-
1569 - per-second reference clock is attached to the serial
1570 - line's data carrier detect input, the local system
1571 - clock will be calibrated to it. A clock with a high
1572 - error, that is, a deviation of more than 25
1573 - microseconds per tick, is ignored.
1574 -
1575 -
1576 - TIOCGPPS
1577 - The argument is a pointer to an int, in which the state
1578 - of the even handling is returned. The int is set to a
1579 - non-zero value if pulse-per-second (PPS) handling has
1580 - been enabled. Otherwise, it is set to zero.
1581 -
1582 -
1583 - TIOCGSOFTCAR
1584 - The argument is a pointer to an int whose value is 1 or
1585 - 0, depending on whether the software carrier detect is
1586 - turned on or off.
1587 -
1588 -
1589 - TIOCSSOFTCAR
1590 - The argument is a pointer to an int whose value is 1 or
1591 - 0. The value of the integer should be 0 to turn off
1592 - software carrier, or 1 to turn it on.
1593 -
1594 -
1595 - TIOCGPPSEV
1596 - The argument is a pointer to a struct ppsclockev. This
1597 - structure contains the following members:
1598 -
1599 - struct timeval tv;
1600 - uint32_t serial;
1601 -
1602 - "tv" is the system clock timestamp when the event
1603 - (pulse on the DCD pin) occurred. "serial" is the
1604 - ordinal of the event, which each consecutive event
1605 - being assigned the next ordinal. The first event
1606 - registered gets a "serial" value of 1. The TIOCGPPSEV
1607 - returns the last event registered; multiple calls will
1608 - persistently return the same event until a new one is
1609 - registered. In addition to time stamping and saving the
1610 - event, if it is of one-second period and of
1611 - consistently high accuracy, the local system clock will
1612 - automatically calibrate to it.
1613 -
1614 -
1615 1067 FILES
1616 - Files in or under /dev
1068 + Files in or under /dev
1617 1069
1618 1070 SEE ALSO
1619 - stty(1), fork(2), getpgid(2), getsid(2), ioctl(2), setsid(2),
1620 - sigaction(2), signal(3C), tcsetpgrp(3C), termios(3C), signal.h(3HEAD),
1621 - streamio(7I)
1071 + stty(1), fork(2), getpgid(2), getsid(2), ioctl(2), setsid(2),
1072 + sigaction(2), signal(3C), tcsetpgrp(3C), termios(3C), signal.h(3HEAD),
1073 + streamio(7I)
1622 1074
1623 -
1624 -
1625 - December 30, 2016 TERMIO(7I)
1075 +illumos March 17, 2019 illumos
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX