source: branches/minix3-book/include/termios.h@ 9

Last change on this file since 9 was 4, checked in by Mattia Monga, 14 years ago

Importazione sorgenti libro

File size: 8.4 KB
Line 
1/* The <termios.h> header is used for controlling tty modes. */
2
3#ifndef _TERMIOS_H
4#define _TERMIOS_H
5
6typedef unsigned short tcflag_t;
7typedef unsigned char cc_t;
8typedef unsigned int speed_t;
9
10#define NCCS 20 /* size of cc_c array, some extra space
11 * for extensions. */
12
13/* Primary terminal control structure. POSIX Table 7-1. */
14struct termios {
15 tcflag_t c_iflag; /* input modes */
16 tcflag_t c_oflag; /* output modes */
17 tcflag_t c_cflag; /* control modes */
18 tcflag_t c_lflag; /* local modes */
19 speed_t c_ispeed; /* input speed */
20 speed_t c_ospeed; /* output speed */
21 cc_t c_cc[NCCS]; /* control characters */
22};
23
24/* Values for termios c_iflag bit map. POSIX Table 7-2. */
25#define BRKINT 0x0001 /* signal interrupt on break */
26#define ICRNL 0x0002 /* map CR to NL on input */
27#define IGNBRK 0x0004 /* ignore break */
28#define IGNCR 0x0008 /* ignore CR */
29#define IGNPAR 0x0010 /* ignore characters with parity errors */
30#define INLCR 0x0020 /* map NL to CR on input */
31#define INPCK 0x0040 /* enable input parity check */
32#define ISTRIP 0x0080 /* mask off 8th bit */
33#define IXOFF 0x0100 /* enable start/stop input control */
34#define IXON 0x0200 /* enable start/stop output control */
35#define PARMRK 0x0400 /* mark parity errors in the input queue */
36
37/* Values for termios c_oflag bit map. POSIX Sec. 7.1.2.3. */
38#define OPOST 0x0001 /* perform output processing */
39
40/* Values for termios c_cflag bit map. POSIX Table 7-3. */
41#define CLOCAL 0x0001 /* ignore modem status lines */
42#define CREAD 0x0002 /* enable receiver */
43#define CSIZE 0x000C /* number of bits per character */
44#define CS5 0x0000 /* if CSIZE is CS5, characters are 5 bits */
45#define CS6 0x0004 /* if CSIZE is CS6, characters are 6 bits */
46#define CS7 0x0008 /* if CSIZE is CS7, characters are 7 bits */
47#define CS8 0x000C /* if CSIZE is CS8, characters are 8 bits */
48#define CSTOPB 0x0010 /* send 2 stop bits if set, else 1 */
49#define HUPCL 0x0020 /* hang up on last close */
50#define PARENB 0x0040 /* enable parity on output */
51#define PARODD 0x0080 /* use odd parity if set, else even */
52
53/* Values for termios c_lflag bit map. POSIX Table 7-4. */
54#define ECHO 0x0001 /* enable echoing of input characters */
55#define ECHOE 0x0002 /* echo ERASE as backspace */
56#define ECHOK 0x0004 /* echo KILL */
57#define ECHONL 0x0008 /* echo NL */
58#define ICANON 0x0010 /* canonical input (erase and kill enabled) */
59#define IEXTEN 0x0020 /* enable extended functions */
60#define ISIG 0x0040 /* enable signals */
61#define NOFLSH 0x0080 /* disable flush after interrupt or quit */
62#define TOSTOP 0x0100 /* send SIGTTOU (job control, not implemented*/
63
64/* Indices into c_cc array. Default values in parentheses. POSIX Table 7-5. */
65#define VEOF 0 /* cc_c[VEOF] = EOF char (^D) */
66#define VEOL 1 /* cc_c[VEOL] = EOL char (undef) */
67#define VERASE 2 /* cc_c[VERASE] = ERASE char (^H) */
68#define VINTR 3 /* cc_c[VINTR] = INTR char (DEL) */
69#define VKILL 4 /* cc_c[VKILL] = KILL char (^U) */
70#define VMIN 5 /* cc_c[VMIN] = MIN value for timer */
71#define VQUIT 6 /* cc_c[VQUIT] = QUIT char (^\) */
72#define VTIME 7 /* cc_c[VTIME] = TIME value for timer */
73#define VSUSP 8 /* cc_c[VSUSP] = SUSP (^Z, ignored) */
74#define VSTART 9 /* cc_c[VSTART] = START char (^S) */
75#define VSTOP 10 /* cc_c[VSTOP] = STOP char (^Q) */
76
77#define _POSIX_VDISABLE (cc_t)0xFF /* You can't even generate this
78 * character with 'normal' keyboards.
79 * But some language specific keyboards
80 * can generate 0xFF. It seems that all
81 * 256 are used, so cc_t should be a
82 * short...
83 */
84
85/* Values for the baud rate settings. POSIX Table 7-6. */
86#define B0 0x0000 /* hang up the line */
87#define B50 0x1000 /* 50 baud */
88#define B75 0x2000 /* 75 baud */
89#define B110 0x3000 /* 110 baud */
90#define B134 0x4000 /* 134.5 baud */
91#define B150 0x5000 /* 150 baud */
92#define B200 0x6000 /* 200 baud */
93#define B300 0x7000 /* 300 baud */
94#define B600 0x8000 /* 600 baud */
95#define B1200 0x9000 /* 1200 baud */
96#define B1800 0xA000 /* 1800 baud */
97#define B2400 0xB000 /* 2400 baud */
98#define B4800 0xC000 /* 4800 baud */
99#define B9600 0xD000 /* 9600 baud */
100#define B19200 0xE000 /* 19200 baud */
101#define B38400 0xF000 /* 38400 baud */
102
103/* Optional actions for tcsetattr(). POSIX Sec. 7.2.1.2. */
104#define TCSANOW 1 /* changes take effect immediately */
105#define TCSADRAIN 2 /* changes take effect after output is done */
106#define TCSAFLUSH 3 /* wait for output to finish and flush input */
107
108/* Queue_selector values for tcflush(). POSIX Sec. 7.2.2.2. */
109#define TCIFLUSH 1 /* flush accumulated input data */
110#define TCOFLUSH 2 /* flush accumulated output data */
111#define TCIOFLUSH 3 /* flush accumulated input and output data */
112
113/* Action values for tcflow(). POSIX Sec. 7.2.2.2. */
114#define TCOOFF 1 /* suspend output */
115#define TCOON 2 /* restart suspended output */
116#define TCIOFF 3 /* transmit a STOP character on the line */
117#define TCION 4 /* transmit a START character on the line */
118
119/* Function Prototypes. */
120#ifndef _ANSI_H
121#include <ansi.h>
122#endif
123
124_PROTOTYPE( int tcsendbreak, (int _fildes, int _duration) );
125_PROTOTYPE( int tcdrain, (int _filedes) );
126_PROTOTYPE( int tcflush, (int _filedes, int _queue_selector) );
127_PROTOTYPE( int tcflow, (int _filedes, int _action) );
128_PROTOTYPE( speed_t cfgetispeed, (const struct termios *_termios_p) );
129_PROTOTYPE( speed_t cfgetospeed, (const struct termios *_termios_p) );
130_PROTOTYPE( int cfsetispeed, (struct termios *_termios_p, speed_t _speed) );
131_PROTOTYPE( int cfsetospeed, (struct termios *_termios_p, speed_t _speed) );
132_PROTOTYPE( int tcgetattr, (int _filedes, struct termios *_termios_p) );
133_PROTOTYPE( int tcsetattr, \
134 (int _filedes, int _opt_actions, const struct termios *_termios_p) );
135
136#define cfgetispeed(termios_p) ((termios_p)->c_ispeed)
137#define cfgetospeed(termios_p) ((termios_p)->c_ospeed)
138#define cfsetispeed(termios_p, speed) ((termios_p)->c_ispeed = (speed), 0)
139#define cfsetospeed(termios_p, speed) ((termios_p)->c_ospeed = (speed), 0)
140
141#ifdef _MINIX
142/* Here are the local extensions to the POSIX standard for Minix. Posix
143 * conforming programs are not able to access these, and therefore they are
144 * only defined when a Minix program is compiled.
145 */
146
147/* Extensions to the termios c_iflag bit map. */
148#define IXANY 0x0800 /* allow any key to continue ouptut */
149
150/* Extensions to the termios c_oflag bit map. They are only active iff
151 * OPOST is enabled. */
152#define ONLCR 0x0002 /* Map NL to CR-NL on output */
153#define XTABS 0x0004 /* Expand tabs to spaces */
154#define ONOEOT 0x0008 /* discard EOT's (^D) on output) */
155
156/* Extensions to the termios c_lflag bit map. */
157#define LFLUSHO 0x0200 /* Flush output. */
158
159/* Extensions to the c_cc array. */
160#define VREPRINT 11 /* cc_c[VREPRINT] (^R) */
161#define VLNEXT 12 /* cc_c[VLNEXT] (^V) */
162#define VDISCARD 13 /* cc_c[VDISCARD] (^O) */
163
164/* Extensions to baud rate settings. */
165#define B57600 0x0100 /* 57600 baud */
166#define B115200 0x0200 /* 115200 baud */
167
168/* These are the default settings used by the kernel and by 'stty sane' */
169
170#define TCTRL_DEF (CREAD | CS8 | HUPCL)
171#define TINPUT_DEF (BRKINT | ICRNL | IXON | IXANY)
172#define TOUTPUT_DEF (OPOST | ONLCR)
173#define TLOCAL_DEF (ISIG | IEXTEN | ICANON | ECHO | ECHOE)
174#define TSPEED_DEF B9600
175
176#define TEOF_DEF '\4' /* ^D */
177#define TEOL_DEF _POSIX_VDISABLE
178#define TERASE_DEF '\10' /* ^H */
179#define TINTR_DEF '\3' /* ^C */
180#define TKILL_DEF '\25' /* ^U */
181#define TMIN_DEF 1
182#define TQUIT_DEF '\34' /* ^\ */
183#define TSTART_DEF '\21' /* ^Q */
184#define TSTOP_DEF '\23' /* ^S */
185#define TSUSP_DEF '\32' /* ^Z */
186#define TTIME_DEF 0
187#define TREPRINT_DEF '\22' /* ^R */
188#define TLNEXT_DEF '\26' /* ^V */
189#define TDISCARD_DEF '\17' /* ^O */
190
191/* Window size. This information is stored in the TTY driver but not used.
192 * This can be used for screen based applications in a window environment.
193 * The ioctls TIOCGWINSZ and TIOCSWINSZ can be used to get and set this
194 * information.
195 */
196
197struct winsize
198{
199 unsigned short ws_row; /* rows, in characters */
200 unsigned short ws_col; /* columns, in characters */
201 unsigned short ws_xpixel; /* horizontal size, pixels */
202 unsigned short ws_ypixel; /* vertical size, pixels */
203};
204#endif /* _MINIX */
205
206#endif /* _TERMIOS_H */
Note: See TracBrowser for help on using the repository browser.