1bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch/* Copyright (c) 2013 The Chromium Authors. All rights reserved.
2bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch * Use of this source code is governed by a BSD-style license that can be
3bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch * found in the LICENSE file. */
4bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
5ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#ifndef LIBRARIES_NACL_IO_INCLUDE_SYS_TERMIOS_H_
6ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#define LIBRARIES_NACL_IO_INCLUDE_SYS_TERMIOS_H_
7bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
8bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define IGNBRK  0000001
9bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define BRKINT  0000002
10bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define IGNPAR  0000004
11bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define PARMRK  0000010
12bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define INPCK   0000020
13bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define ISTRIP  0000040
14bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define INLCR   0000100
15bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define IGNCR   0000200
16bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define ICRNL   0000400
17bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define IUCLC   0001000
18bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define IXON    0002000
19bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define IXANY   0004000
20bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define IXOFF   0010000
21bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define IMAXBEL 0020000
22bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define IUTF8   0040000
23bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
24bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define OPOST   000001
25bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define OCRNL   000004
26bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define ONLCR   000010
27bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define ONOCR   000020
28bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define ONLRET  000040
29bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define TAB3    014000
30bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
31bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define CLOCAL  004000
32bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define CREAD   000200
33bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define PARODD  001000
34bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define CSIZE   000060
35bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define CS5     0
36bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define CS6     020
37bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define CS7     040
38bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define CS8     060
39bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define CSTOPB  000100
40bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define HUPCL   002000
41bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define PARENB  000400
42bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define PAODD   001000
43bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
44bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define ECHO    0000010
45bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define ECHOE   0000020
46bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define ECHOK   0000040
47bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define ECHONL  0000100
48bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define ICANON  0000002
49bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define IEXTEN  0100000
50bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define ISIG    0000001
51bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define NOFLSH  0000200
52bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define TOSTOP  0000400
53bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define ECHOCTL 0001000
54bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define ECHOPRT 0002000
55bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define ECHOKE  0004000
56bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define FLUSHO  0010000
57bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define PENDIN  0040000
58bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
59bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define VINTR     0
60bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define VQUIT     1
61bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define VERASE    2
62bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define VKILL     3
63bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define VEOF      4
64bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define VTIME     5
65bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define VMIN      6
66bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define VSWTC     7
67bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define VSTART    8
68bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define VSTOP     9
69bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define VSUSP    10
70bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define VEOL     11
71bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define VREPRINT 12
72bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define VDISCARD 13
73bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define VWERASE  14
74bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define VLNEXT   15
75bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define VEOL2    16
76bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
77bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define B0      000000
78bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define B50     000001
79bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define B75     000002
80bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define B110    000003
81bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define B134    000004
82bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define B150    000005
83bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define B200    000006
84bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define B300    000007
85bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define B600    000010
86bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define B1200   000011
87bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define B1800   000012
88bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define B2400   000013
89bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define B4800   000014
90bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define B9600   000015
91bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define B19200  000016
92bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define B38400  000017
93bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
94bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define TCIFLUSH  0
95bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define TCOFLUSH  1
96bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define TCIOFLUSH 2
97bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
98bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define TCSANOW   0
99bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define TCSADRAIN 1
100bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define TCSAFLUSH 2
101bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
1023551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#define TCOOFF    0
1033551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#define TCOON     1
1043551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#define TCIOFF    2
1053551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#define TCION     3
1063551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
107bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochtypedef unsigned char cc_t;
108bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochtypedef unsigned short tcflag_t;
109bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochtypedef char speed_t;
110bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
111bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define NCCS 32
112bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochstruct termios {
113bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  tcflag_t c_iflag;
114bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  tcflag_t c_oflag;
115bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  tcflag_t c_cflag;
116bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  tcflag_t c_lflag;
117bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  char c_line;
118bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  cc_t c_cc[NCCS];
119bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  speed_t c_ispeed;
120bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  speed_t c_ospeed;
121bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch};
122bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
123bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include <sys/cdefs.h>
124bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
125bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch__BEGIN_DECLS
126bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
12746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)speed_t cfgetispeed(const struct termios* termios_p);
12846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)speed_t cfgetospeed(const struct termios* termios_p);
12946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)int cfsetispeed(struct termios* termios_p, speed_t speed);
13046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)int cfsetospeed(struct termios* termios_p, speed_t speed);
13146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)int cfsetspeed(struct termios* termios_p, speed_t speed);
1323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
1333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)int tcdrain(int fd);
1343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)int tcflow(int fd, int action);
135bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochint tcflush(int fd, int queue_selector);
13646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)int tcgetattr(int fd, struct termios* termios_p);
1373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)int tcsendbreak(int fd, int duration);
13846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)int tcsetattr(int fd, int optional_actions, const struct termios* termios_p);
139bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
140bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch__END_DECLS
141bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
142ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#endif  /* LIBRARIES_NACL_IO_INCLUDE_SYS_TERMIOS_H_ */
143