|
|||
Prex Home / Browse Source - Prex Version: 0.9.0 |
|||
root/include/sys/termios.h/* [<][>][^][v][top][bottom][index][help] */INCLUDED FROM1 /* 2 * Copyright (c) 1988, 1989, 1993, 1994 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. Neither the name of the University nor the names of its contributors 14 * may be used to endorse or promote products derived from this software 15 * without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * 29 * @(#)termios.h 8.3 (Berkeley) 3/28/94 30 */ 31 32 #ifndef _SYS_TERMIOS_H_ 33 #define _SYS_TERMIOS_H_ 34 35 #include <sys/ioctl.h> 36 37 /* 38 * Special Control Characters 39 * 40 * Index into c_cc[] character array. 41 * 42 * Name Subscript Enabled by 43 */ 44 #define VEOF 0 /* ICANON */ 45 #define VEOL 1 /* ICANON */ 46 #define VEOL2 2 /* ICANON */ 47 #define VERASE 3 /* ICANON */ 48 #define VWERASE 4 /* ICANON */ 49 #define VKILL 5 /* ICANON */ 50 #define VREPRINT 6 /* ICANON */ 51 /* 7 spare 1 */ 52 #define VINTR 8 /* ISIG */ 53 #define VQUIT 9 /* ISIG */ 54 #define VSUSP 10 /* ISIG */ 55 #define VDSUSP 11 /* ISIG */ 56 #define VSTART 12 /* IXON, IXOFF */ 57 #define VSTOP 13 /* IXON, IXOFF */ 58 #define VLNEXT 14 /* IEXTEN */ 59 #define VDISCARD 15 /* IEXTEN */ 60 #define VMIN 16 /* !ICANON */ 61 #define VTIME 17 /* !ICANON */ 62 #define VSTATUS 18 /* ICANON */ 63 #define VDDB 19 /* Prex: debugger key */ 64 #define NCCS 20 65 66 #define _POSIX_VDISABLE ((unsigned char)'\377') 67 68 #define CCEQ(val, c) (c == val ? val != _POSIX_VDISABLE : 0) 69 70 /* 71 * Input flags - software input processing 72 */ 73 #define IGNBRK 0x00000001 /* ignore BREAK condition */ 74 #define BRKINT 0x00000002 /* map BREAK to SIGINTR */ 75 #define IGNPAR 0x00000004 /* ignore (discard) parity errors */ 76 #define PARMRK 0x00000008 /* mark parity and framing errors */ 77 #define INPCK 0x00000010 /* enable checking of parity errors */ 78 #define ISTRIP 0x00000020 /* strip 8th bit off chars */ 79 #define INLCR 0x00000040 /* map NL into CR */ 80 #define IGNCR 0x00000080 /* ignore CR */ 81 #define ICRNL 0x00000100 /* map CR to NL (ala CRMOD) */ 82 #define IXON 0x00000200 /* enable output flow control */ 83 #define IXOFF 0x00000400 /* enable input flow control */ 84 #define IXANY 0x00000800 /* any char will restart after stop */ 85 #define IMAXBEL 0x00002000 /* ring bell on input queue full */ 86 87 /* 88 * Output flags - software output processing 89 */ 90 #define OPOST 0x00000001 /* enable following output processing */ 91 #define ONLCR 0x00000002 /* map NL to CR-NL (ala CRMOD) */ 92 #define OXTABS 0x00000004 /* expand tabs to spaces */ 93 #define ONOEOT 0x00000008 /* discard EOT's (^D) on output) */ 94 95 /* 96 * Control flags - hardware control of terminal 97 */ 98 #define CIGNORE 0x00000001 /* ignore control flags */ 99 #define CSIZE 0x00000300 /* character size mask */ 100 #define CS5 0x00000000 /* 5 bits (pseudo) */ 101 #define CS6 0x00000100 /* 6 bits */ 102 #define CS7 0x00000200 /* 7 bits */ 103 #define CS8 0x00000300 /* 8 bits */ 104 #define CSTOPB 0x00000400 /* send 2 stop bits */ 105 #define CREAD 0x00000800 /* enable receiver */ 106 #define PARENB 0x00001000 /* parity enable */ 107 #define PARODD 0x00002000 /* odd parity, else even */ 108 #define HUPCL 0x00004000 /* hang up on last close */ 109 #define CLOCAL 0x00008000 /* ignore modem status lines */ 110 #define CCTS_OFLOW 0x00010000 /* CTS flow control of output */ 111 #define CRTSCTS CCTS_OFLOW /* ??? */ 112 #define CRTS_IFLOW 0x00020000 /* RTS flow control of input */ 113 #define MDMBUF 0x00100000 /* flow control output via Carrier */ 114 115 /* 116 * "Local" flags - dumping ground for other state 117 * 118 * Warning: some flags in this structure begin with 119 * the letter "I" and look like they belong in the 120 * input flag. 121 */ 122 123 #ifndef _POSIX_SOURCE 124 #define ECHOKE 0x00000001 /* visual erase for line kill */ 125 #endif /*_POSIX_SOURCE */ 126 #define ECHOE 0x00000002 /* visually erase chars */ 127 #define ECHOK 0x00000004 /* echo NL after line kill */ 128 #define ECHO 0x00000008 /* enable echoing */ 129 #define ECHONL 0x00000010 /* echo NL even if ECHO is off */ 130 #ifndef _POSIX_SOURCE 131 #define ECHOPRT 0x00000020 /* visual erase mode for hardcopy */ 132 #define ECHOCTL 0x00000040 /* echo control chars as ^(Char) */ 133 #endif /*_POSIX_SOURCE */ 134 #define ISIG 0x00000080 /* enable signals INTR, QUIT, [D]SUSP */ 135 #define ICANON 0x00000100 /* canonicalize input lines */ 136 #ifndef _POSIX_SOURCE 137 #define ALTWERASE 0x00000200 /* use alternate WERASE algorithm */ 138 #endif /*_POSIX_SOURCE */ 139 #define IEXTEN 0x00000400 /* enable DISCARD and LNEXT */ 140 #define EXTPROC 0x00000800 /* external processing */ 141 #define TOSTOP 0x00400000 /* stop background jobs from output */ 142 #ifndef _POSIX_SOURCE 143 #define FLUSHO 0x00800000 /* output being flushed (state) */ 144 #define NOKERNINFO 0x02000000 /* no kernel output from VSTATUS */ 145 #define PENDIN 0x20000000 /* XXX retype pending input (state) */ 146 #endif /*_POSIX_SOURCE */ 147 #define NOFLSH 0x80000000 /* don't flush after interrupt */ 148 149 typedef unsigned long tcflag_t; 150 typedef unsigned char cc_t; 151 typedef long speed_t; 152 153 struct termios { 154 tcflag_t c_iflag; /* input flags */ 155 tcflag_t c_oflag; /* output flags */ 156 tcflag_t c_cflag; /* control flags */ 157 tcflag_t c_lflag; /* local flags */ 158 cc_t c_cc[NCCS]; /* control chars */ 159 long c_ispeed; /* input speed */ 160 long c_ospeed; /* output speed */ 161 }; 162 163 /* 164 * Commands passed to tcsetattr() for setting the termios structure. 165 */ 166 #define TCSANOW 0 /* make change immediate */ 167 #define TCSADRAIN 1 /* drain output, then change */ 168 #define TCSAFLUSH 2 /* drain output, flush input */ 169 #ifndef _POSIX_SOURCE 170 #define TCSASOFT 0x10 /* flag - don't alter h.w. state */ 171 #endif 172 173 /* 174 * Standard speeds 175 */ 176 #define B0 0 177 #define B50 50 178 #define B75 75 179 #define B110 110 180 #define B134 134 181 #define B150 150 182 #define B200 200 183 #define B300 300 184 #define B600 600 185 #define B1200 1200 186 #define B1800 1800 187 #define B2400 2400 188 #define B4800 4800 189 #define B9600 9600 190 #define B19200 19200 191 #define B38400 38400 192 193 #ifndef KERNEL 194 195 #define TCIFLUSH 1 196 #define TCOFLUSH 2 197 #define TCIOFLUSH 3 198 #define TCOOFF 1 199 #define TCOON 2 200 #define TCIOFF 3 201 #define TCION 4 202 203 #include <sys/cdefs.h> 204 205 __BEGIN_DECLS 206 speed_t cfgetispeed(const struct termios *); 207 speed_t cfgetospeed(const struct termios *); 208 int cfsetispeed(struct termios *, speed_t); 209 int cfsetospeed(struct termios *, speed_t); 210 int tcgetattr(int, struct termios *); 211 int tcsetattr(int, int, const struct termios *); 212 int tcdrain(int); 213 int tcflow(int, int); 214 int tcflush(int, int); 215 int tcsendbreak(int, int); 216 217 #ifndef _POSIX_SOURCE 218 void cfmakeraw(struct termios *); 219 int cfsetspeed(struct termios *, speed_t); 220 #endif /* !_POSIX_SOURCE */ 221 __END_DECLS 222 223 #endif /* !KERNEL */ 224 225 226 /* 227 * Tty ioctl's except for those supported only for backwards compatibility 228 * with the old tty driver. 229 */ 230 231 /* 232 * Window/terminal size structure. This information is stored by the kernel 233 * in order to provide a consistent interface, but is not used by the kernel. 234 */ 235 struct winsize { 236 unsigned short ws_row; /* rows, in characters */ 237 unsigned short ws_col; /* columns, in characters */ 238 unsigned short ws_xpixel; /* horizontal size, pixels */ 239 unsigned short ws_ypixel; /* vertical size, pixels */ 240 }; 241 242 #define TIOCEXCL _IO('t', 13) /* set exclusive use of tty */ 243 #define TIOCNXCL _IO('t', 14) /* reset exclusive use of tty */ 244 /* 15 unused */ 245 #define TIOCFLUSH _IOW('t', 16, int) /* flush buffers */ 246 /* 17-18 compat */ 247 #define TIOCGETA _IOR('t', 19, struct termios) /* get termios struct */ 248 #define TIOCSETA _IOW('t', 20, struct termios) /* set termios struct */ 249 #define TIOCSETAW _IOW('t', 21, struct termios) /* drain output, set */ 250 #define TIOCSETAF _IOW('t', 22, struct termios) /* drn out, fls in, set */ 251 #define TIOCGETD _IOR('t', 26, int) /* get line discipline */ 252 #define TIOCSETD _IOW('t', 27, int) /* set line discipline */ 253 /* 127-124 compat */ 254 #define TIOCSBRK _IO('t', 123) /* set break bit */ 255 #define TIOCCBRK _IO('t', 122) /* clear break bit */ 256 #define TIOCSDTR _IO('t', 121) /* set data terminal ready */ 257 #define TIOCCDTR _IO('t', 120) /* clear data terminal ready */ 258 #define TIOCGPGRP _IOR('t', 119, int) /* get pgrp of tty */ 259 #define TIOCSPGRP _IOW('t', 118, int) /* set pgrp of tty */ 260 /* 117-116 compat */ 261 #define TIOCOUTQ _IOR('t', 115, int) /* output queue size */ 262 #define TIOCSTI _IOW('t', 114, char) /* simulate terminal input */ 263 #define TIOCNOTTY _IO('t', 113) /* void tty association */ 264 265 #define TIOCSTOP _IO('t', 111) /* stop output, like ^S */ 266 #define TIOCSTART _IO('t', 110) /* start output, like ^Q */ 267 #define TIOCMSET _IOW('t', 109, int) /* set all modem bits */ 268 #define TIOCMBIS _IOW('t', 108, int) /* bis modem bits */ 269 #define TIOCMBIC _IOW('t', 107, int) /* bic modem bits */ 270 #define TIOCMGET _IOR('t', 106, int) /* get all modem bits */ 271 #define TIOCGWINSZ _IOR('t', 104, struct winsize) /* get window size */ 272 #define TIOCSWINSZ _IOW('t', 103, struct winsize) /* set window size */ 273 #define UIOCCMD(n) _IO('u', n) /* usr cntl op "n" */ 274 #define TIOCCONS _IOW('t', 98, int) /* become virtual console */ 275 #define TIOCSCTTY _IO('t', 97) /* become controlling tty */ 276 #define TIOCDRAIN _IO('t', 94) /* wait till output drained */ 277 278 #define TTYDISC 0 /* termios tty line discipline */ 279 #define TABLDISC 3 /* tablet discipline */ 280 #define SLIPDISC 4 /* serial IP discipline */ 281 282 /* Prex unique */ 283 #define TIOCSETSIGT _IOW('t', 200, int) /* set signal task */ 284 #define TIOCINQ _IOR('t', 201, int) /* input queue size */ 285 286 /* 287 * Defaults on "first" open. 288 */ 289 #define TTYDEF_IFLAG (tcflag_t)(BRKINT | ICRNL | IXON | IXANY) 290 #define TTYDEF_OFLAG (tcflag_t)(OPOST | ONLCR | OXTABS) 291 #define TTYDEF_LFLAG (tcflag_t)(ECHO | ICANON | ISIG | ECHOE|ECHOK|ECHONL) 292 #define TTYDEF_CFLAG (tcflag_t)(CREAD | CS8 | HUPCL) 293 #define TTYDEF_SPEED (B9600) 294 295 /* 296 * Control Character Defaults 297 */ 298 #define CTRL(x) (cc_t)(x&037) 299 #define CEOF CTRL('d') 300 #define CEOL ((unsigned char)'\377') /* XXX avoid _POSIX_VDISABLE */ 301 #define CERASE 0177 302 #define CINTR CTRL('c') 303 #define CSTATUS ((unsigned char)'\377') /* XXX avoid _POSIX_VDISABLE */ 304 #define CKILL CTRL('u') 305 #define CMIN 1 306 #define CQUIT 034 /* FS, ^\ */ 307 #define CSUSP CTRL('z') 308 #define CTIME 0 309 #define CDSUSP CTRL('y') 310 #define CSTART CTRL('q') 311 #define CSTOP CTRL('s') 312 #define CLNEXT CTRL('v') 313 #define CDISCARD CTRL('o') 314 #define CWERASE CTRL('w') 315 #define CREPRINT CTRL('r') 316 #define CEOT CEOF 317 /* compat */ 318 #define CBRK CEOL 319 #define CRPRNT CREPRINT 320 #define CFLUSH CDISCARD 321 #define CKDB CTRL('k') 322 323 #ifdef KERNEL 324 /* 325 * #define TTYDEFCHARS to include an array of default control characters. 326 */ 327 #define TTYDEFCHARS \ 328 { \ 329 CEOF, CEOL, CEOL, CERASE, CWERASE, CKILL, CREPRINT, \ 330 _POSIX_VDISABLE, CINTR, CQUIT, CSUSP, CDSUSP, CSTART, CSTOP, CLNEXT, \ 331 CDISCARD, CMIN, CTIME, CSTATUS, CKDB \ 332 } 333 #endif /* KERNEL */ 334 335 /* 336 * END OF PROTECTED INCLUDE. 337 */ 338 #endif /* !_SYS_TERMIOS_H_ */ /* [<][>][^][v][top][bottom][index][help] */ | |||
Copyright© 2005-2009 Kohsuke Ohtani |