绋嬪簭14-10 linux/include/termios.h
1 #ifndef _TERMIOS_H
2 #define _TERMIOS_H
3
4 #include <sys/types.h>
5
6 #define TTY_BUF_SIZE 1024 // tty涓殑缂撳啿鍖洪暱搴︺€�
7
8 /* 0x54 is just a magic number to make these relatively uniqe ('T') */
/* 0x54鍙槸涓€涓瓟鏁帮紝鐩殑鏄负浜嗕娇杩欎簺甯告暟鍞竴('T') */
9
// tty璁惧鐨�ioctl璋冪敤鍛戒护闆嗐€�ioctl灏嗗懡浠ょ紪鐮佸湪浣庝綅瀛椾腑銆�
// 涓嬮潰鍚嶇ОTC[*]鐨勫惈涔夋槸tty鎺у埗鍛戒护銆�
// 鍙栫浉搴旂粓绔�termios缁撴瀯涓殑淇℃伅(鍙傝tcgetattr())銆�
10 #define TCGETS 0x5401
// 璁剧疆鐩稿簲缁堢termios缁撴瀯涓殑淇℃伅(鍙傝tcsetattr()锛�TCSANOW)銆�
11 #define TCSETS 0x5402
// 鍦ㄨ缃粓绔�termios鐨勪俊鎭箣鍓嶏紝闇€瑕佸厛绛夊緟杈撳嚭闃熷垪涓墍鏈夋暟鎹鐞嗗畬(鑰楀敖)銆傚浜庝慨鏀瑰弬鏁�
// 浼氬奖鍝嶈緭鍑虹殑鎯呭喌锛屽氨闇€瑕佷娇鐢ㄨ繖绉嶅舰寮�(鍙傝tcsetattr()锛�TCSADRAIN閫夐」)銆�
12 #define TCSETSW 0x5403
// 鍦ㄨ缃�termios鐨勪俊鎭箣鍓嶏紝闇€瑕佸厛绛夊緟杈撳嚭闃熷垪涓墍鏈夋暟鎹鐞嗗畬锛屽苟涓斿埛鏂�(娓呯┖)杈撳叆闃熷垪銆�
// 鍐嶈缃紙鍙傝tcsetattr()锛�TCSAFLUSH閫夐」锛夈€�
13 #define TCSETSF 0x5404
// 鍙栫浉搴旂粓绔�termio缁撴瀯涓殑淇℃伅(鍙傝tcgetattr())銆�
14 #define TCGETA 0x5405
// 璁剧疆鐩稿簲缁堢termio缁撴瀯涓殑淇℃伅(鍙傝tcsetattr()锛�TCSANOW閫夐」)銆�
15 #define TCSETA 0x5406
// 鍦ㄨ缃粓绔�termio鐨勪俊鎭箣鍓嶏紝闇€瑕佸厛绛夊緟杈撳嚭闃熷垪涓墍鏈夋暟鎹鐞嗗畬(鑰楀敖)銆傚浜庝慨鏀瑰弬鏁�
// 浼氬奖鍝嶈緭鍑虹殑鎯呭喌锛屽氨闇€瑕佷娇鐢ㄨ繖绉嶅舰寮�(鍙傝tcsetattr()锛�TCSADRAIN閫夐」)銆�
16 #define TCSETAW 0x5407
// 鍦ㄨ缃�termio鐨勪俊鎭箣鍓嶏紝闇€瑕佸厛绛夊緟杈撳嚭闃熷垪涓墍鏈夋暟鎹鐞嗗畬锛屽苟涓斿埛鏂�(娓呯┖)杈撳叆闃熷垪銆�
// 鍐嶈缃紙鍙傝tcsetattr()锛�TCSAFLUSH閫夐」锛夈€�
17 #define TCSETAF 0x5408
// 绛夊緟杈撳嚭闃熷垪澶勭悊瀹屾瘯(绌�)锛岃嫢鍙傛暟鍊兼槸0锛屽垯鍙戦€佷竴涓�break锛堝弬瑙�tcsendbreak()锛�tcdrain()锛夈€�
18 #define TCSBRK 0x5409
// 寮€濮�/鍋滄鎺у埗銆傚鏋滃弬鏁板€兼槸0锛屽垯鎸傝捣杈撳嚭锛涘鏋滄槸1锛屽垯閲嶆柊寮€鍚寕璧风殑杈撳嚭锛涘鏋滄槸2锛�
// 鍒欐寕璧疯緭鍏ワ紱濡傛灉鏄�3锛屽垯閲嶆柊寮€鍚寕璧风殑杈撳叆锛堝弬瑙�tcflow()锛夈€�
19 #define TCXONC 0x540A
// 鍒锋柊宸插啓杈撳嚭浣嗚繕娌″彂閫佹垨宸叉敹浣嗚繕娌℃湁璇绘暟鎹€傚鏋滃弬鏁版槸0锛屽垯鍒锋柊(娓呯┖)杈撳叆闃熷垪锛涘鏋�
// 鏄�1锛屽垯鍒锋柊杈撳嚭闃熷垪锛涘鏋滄槸2锛屽垯鍒锋柊杈撳叆鍜岃緭鍑洪槦鍒楋紙鍙傝tcflush()锛夈€�
20 #define TCFLSH 0x540B
// 涓嬮潰鍚嶇ОTIOC[*]鐨勫惈涔夋槸tty 杈撳叆杈撳嚭鎺у埗鍛戒护銆�
// 璁剧疆缁堢涓茶绾胯矾涓撶敤妯″紡銆�
21 #define TIOCEXCL 0x540C
// 澶嶄綅缁堢涓茶绾胯矾涓撶敤妯″紡銆�
22 #define TIOCNXCL 0x540D
// 璁剧疆tty涓烘帶鍒剁粓绔€�(TIOCNOTTY - 绂佹tty涓烘帶鍒剁粓绔�)銆�
23 #define TIOCSCTTY 0x540E
// 璇诲彇鎸囧畾缁堢璁惧杩涚▼鐨勭粍id锛屽弬瑙�tcgetpgrp()銆傝甯告暟绗﹀彿鍚嶇О鏄�"Terminal IO Control
// Get PGRP "鐨勭缉鍐欍€傝鍙栧墠鍙拌繘绋嬬粍ID銆�
24 #define TIOCGPGRP 0x540F
// 璁剧疆鎸囧畾缁堢璁惧杩涚▼鐨勭粍id(鍙傝tcsetpgrp())銆�
25 #define TIOCSPGRP 0x5410
// 杩斿洖杈撳嚭闃熷垪涓繕鏈€佸嚭鐨勫瓧绗︽暟銆�
26 #define TIOCOUTQ 0x5411
// 妯℃嫙缁堢杈撳叆銆傝鍛戒护浠ヤ竴涓寚鍚戝瓧绗︾殑鎸囬拡浣滀负鍙傛暟锛屽苟鍋囪璇ュ瓧绗︽槸鍦ㄧ粓绔笂閿叆鐨勩€傜敤鎴�
// 蹇呴』鍦ㄨ鎺у埗缁堢涓婂叿鏈夎秴绾х敤鎴锋潈闄愭垨鍏锋湁璇昏鍙潈闄愩€�
27 #define TIOCSTI 0x5412
// 璇诲彇缁堢璁惧绐楀彛澶у皬淇℃伅锛堝弬瑙�winsize缁撴瀯锛夈€�
28 #define TIOCGWINSZ 0x5413
// 璁剧疆缁堢璁惧绐楀彛澶у皬淇℃伅锛堝弬瑙�winsize缁撴瀯锛夈€�
29 #define TIOCSWINSZ 0x5414
// 杩斿洖modem鐘舵€佹帶鍒跺紩绾跨殑褰撳墠鐘舵€佹瘮鐗逛綅鏍囧織闆嗭紙鍙傝涓嬮潰185-196琛岋級銆�
30 #define TIOCMGET 0x5415
// 璁剧疆鍗曚釜modem鐘舵€佹帶鍒跺紩绾跨殑鐘舵€�(true鎴�false)(Individual control line Set)銆�
31 #define TIOCMBIS 0x5416
// 澶嶄綅鍗曚釜modem鐘舵€佹帶鍒跺紩绾跨殑鐘舵€�(Individual control line clear)銆�
32 #define TIOCMBIC 0x5417
// 璁剧疆modem鐘舵€佸紩绾跨殑鐘舵€併€傚鏋滄煇涓€姣旂壒浣嶇疆浣嶏紝鍒�modem瀵瑰簲鐨勭姸鎬佸紩绾垮皢缃负鏈夋晥銆�
33 #define TIOCMSET 0x5418
// 璇诲彇杞欢杞芥尝妫€娴嬫爣蹇�(1 - 寮€鍚紱0 - 鍏抽棴)銆�
// 瀵逛簬鏈湴杩炴帴鐨勭粓绔垨鍏朵粬璁惧锛岃蒋浠惰浇娉㈡爣蹇楁槸寮€鍚殑锛屽浜庝娇鐢�modem绾胯矾鐨勭粓绔垨璁惧
// 鍒欐槸鍏抽棴鐨勩€備负浜嗚兘浣跨敤杩欎袱涓� ioctl璋冪敤锛�tty绾胯矾搴旇鏄互 O_NDELAY 鏂瑰紡鎵撳紑鐨勶紝杩欐牱
// open()灏变笉浼氱瓑寰呰浇娉€€�
34 #define TIOCGSOFTCAR 0x5419
// 璁剧疆杞欢杞芥尝妫€娴嬫爣蹇�(1 - 寮€鍚紱0 - 鍏抽棴)銆�
35 #define TIOCSSOFTCAR 0x541A
// 杩斿洖杈撳叆闃熷垪涓繕鏈彇璧板瓧绗︾殑鏁扮洰銆�
36 #define FIONREAD 0x541B
37 #define TIOCINQ FIONREAD
38
// 绐楀彛澶у皬(Window size)灞炴€х粨鏋勩€傚湪绐楀彛鐜涓彲鐢ㄤ簬鍩轰簬灞忓箷鐨勫簲鐢ㄧ▼搴忋€�
// ioctls涓殑TIOCGWINSZ鍜�TIOCSWINSZ鍙敤鏉ヨ鍙栨垨璁剧疆杩欎簺淇℃伅銆�
39 struct winsize {
40 unsigned short ws_row; // 绐楀彛瀛楃琛屾暟銆�
41 unsigned short ws_col; // 绐楀彛瀛楃鍒楁暟銆�
42 unsigned short ws_xpixel; // 绐楀彛瀹藉害锛岃薄绱犲€笺€�
43 unsigned short ws_ypixel; // 绐楀彛楂樺害锛岃薄绱犲€笺€�
44 };
45
// AT&T绯荤粺V鐨�termio缁撴瀯銆�
46 #define NCC 8 // termio缁撴瀯涓帶鍒跺瓧绗︽暟缁勭殑闀垮害銆�
47 struct termio {
48 unsigned short c_iflag; /* input mode flags */ // 杈撳叆妯″紡鏍囧織銆�
49 unsigned short c_oflag; /* output mode flags */ // 杈撳嚭妯″紡鏍囧織銆�
50 unsigned short c_cflag; /* control mode flags */ // 鎺у埗妯″紡鏍囧織銆�
51 unsigned short c_lflag; /* local mode flags */ // 鏈湴妯″紡鏍囧織銆�
52 unsigned char c_line; /* line discipline */ // 绾胯矾瑙勭▼锛堥€熺巼锛夈€�
53 unsigned char c_cc[NCC]; /* control characters */ // 鎺у埗瀛楃鏁扮粍銆�
54 };
55
// POSIX鐨�termios缁撴瀯銆�
56 #define NCCS 17 // termios缁撴瀯涓帶鍒跺瓧绗︽暟缁勯暱搴︺€�
57 struct termios {
58 tcflag_t c_iflag; /* input mode flags */ // 杈撳叆妯″紡鏍囧織銆�
59 tcflag_t c_oflag; /* output mode flags */ // 杈撳嚭妯″紡鏍囧織銆�
60 tcflag_t c_cflag; /* control mode flags */ // 鎺у埗妯″紡鏍囧織銆�
61 tcflag_t c_lflag; /* local mode flags */ // 鏈湴妯″紡鏍囧織銆�
62 cc_t c_line; /* line discipline */ // 绾胯矾瑙勭▼锛堥€熺巼锛夈€�
63 cc_t c_cc[NCCS]; /* control characters */ // 鎺у埗瀛楃鏁扮粍銆�
64 };
65
// 浠ヤ笅鏄帶鍒跺瓧绗︽暟缁�c_cc[]涓」鐨勭储寮曞€笺€傝鏁扮粍鍒濆鍊煎畾涔夊湪include/linux/tty.h涓€�
// 绋嬪簭鍙互鏇存敼杩欎釜鏁扮粍涓殑鍊笺€傚鏋滃畾涔変簡_POSIX_VDISABLE锛�\0锛夛紝閭d箞褰撴暟缁勬煇涓€椤瑰€�
// 绛変簬 _POSIX_VDISABLE 鐨勫€兼椂锛岃〃绀虹姝娇鐢ㄦ暟缁勪腑鐩稿簲鐨勭壒娈婂瓧绗︺€�
66 /* c_cc characters */ /* c_cc鏁扮粍涓殑瀛楃 */
67 #define VINTR 0 // c_cc[VINTR] = INTR (^C)锛�\003锛屼腑鏂瓧绗︺€�
68 #define VQUIT 1 // c_cc[VQUIT] = QUIT (^\)锛�\034锛岄€€鍑哄瓧绗︺€�
69 #define VERASE 2 // c_cc[VERASE] = ERASE (^H)锛�\177锛屾摝鍑哄瓧绗︺€�
70 #define VKILL 3 // c_cc[VKILL] = KILL (^U)锛�\025锛岀粓姝㈠瓧绗︼紙鍒犻櫎琛岋級銆�
71 #define VEOF 4 // c_cc[VEOF] = EOF (^D)锛�\004锛屾枃浠剁粨鏉熷瓧绗︺€�
72 #define VTIME 5 // c_cc[VTIME] = TIME (\0)锛�\0锛� 瀹氭椂鍣ㄥ€�(鍙傝鍚庨潰璇存槑)銆�
73 #define VMIN 6 // c_cc[VMIN] = MIN (\1)锛�\1锛� 瀹氭椂鍣ㄥ€笺€�
74 #define VSWTC 7 // c_cc[VSWTC] = SWTC (\0)锛�\0锛� 浜ゆ崲瀛楃銆�
75 #define VSTART 8 // c_cc[VSTART] = START (^Q)锛�\021锛屽紑濮嬪瓧绗︺€�
76 #define VSTOP 9 // c_cc[VSTOP] = STOP (^S)锛�\023锛屽仠姝㈠瓧绗︺€�
77 #define VSUSP 10 // c_cc[VSUSP] = SUSP (^Z)锛�\032锛屾寕璧峰瓧绗︺€�
78 #define VEOL 11 // c_cc[VEOL] = EOL (\0)锛�\0锛� 琛岀粨鏉熷瓧绗︺€�
79 #define VREPRINT 12 // c_cc[VREPRINT] = REPRINT (^R)锛�\022锛岄噸鏄剧ず瀛楃銆�
80 #define VDISCARD 13 // c_cc[VDISCARD] = DISCARD (^O)锛�\017锛屼涪寮冨瓧绗︺€�
81 #define VWERASE 14 // c_cc[VWERASE] = WERASE (^W)锛�\027锛屽崟璇嶆摝闄ゅ瓧绗︺€�
82 #define VLNEXT 15 // c_cc[VLNEXT] = LNEXT (^V)锛�\026锛屼笅涓€琛屽瓧绗︺€�
83 #define VEOL2 16 // c_cc[VEOL2] = EOL2 (\0)锛�\0锛� 琛岀粨鏉熷瓧绗�2銆�
84
// termios缁撴瀯杈撳叆妯″紡瀛楁c_iflag鍚勭鏍囧織鐨勭鍙峰父鏁般€�
85 /* c_iflag bits */ /* c_iflag姣旂壒浣� */
86 #define IGNBRK 0000001 // 杈撳叆鏃跺拷鐣�BREAK鏉′欢銆�
87 #define BRKINT 0000002 // 鍦�BREAK鏃朵骇鐢�SIGINT淇″彿銆�
88 #define IGNPAR 0000004 // 蹇界暐濂囧伓鏍¢獙鍑洪敊鐨勫瓧绗︺€�
89 #define PARMRK 0000010 // 鏍囪濂囧伓鏍¢獙閿欍€�
90 #define INPCK 0000020 // 鍏佽杈撳叆濂囧伓鏍¢獙銆�
91 #define ISTRIP 0000040 // 灞忚斀瀛楃绗�8浣嶃€�
92 #define INLCR 0000100 // 杈撳叆鏃跺皢鎹㈣绗�NL鏄犲皠鎴愬洖杞︾CR銆�
93 #define IGNCR 0000200 // 蹇界暐鍥炶溅绗�CR銆�
94 #define ICRNL 0000400 // 鍦ㄨ緭鍏ユ椂灏嗗洖杞︾CR鏄犲皠鎴愭崲琛岀NL銆�
95 #define IUCLC 0001000 // 鍦ㄨ緭鍏ユ椂灏嗗ぇ鍐欏瓧绗﹁浆鎹㈡垚灏忓啓瀛楃銆�
96 #define IXON 0002000 // 鍏佽寮€濮�/鍋滄锛�XON/XOFF锛夎緭鍑烘帶鍒躲€�
97 #define IXANY 0004000 // 鍏佽浠讳綍瀛楃閲嶅惎杈撳嚭銆�
98 #define IXOFF 0010000 // 鍏佽寮€濮�/鍋滄锛�XON/XOFF锛夎緭鍏ユ帶鍒躲€�
99 #define IMAXBEL 0020000 // 杈撳叆闃熷垪婊℃椂鍝嶉搩銆�
100
// termios缁撴瀯涓緭鍑烘ā寮忓瓧娈�c_oflag鍚勭鏍囧織鐨勭鍙峰父鏁般€�
101 /* c_oflag bits */ /* c_oflag姣旂壒浣� */
102 #define OPOST 0000001 // 鎵ц杈撳嚭澶勭悊銆�
103 #define OLCUC 0000002 // 鍦ㄨ緭鍑烘椂灏嗗皬鍐欏瓧绗﹁浆鎹㈡垚澶у啓瀛楃銆�
104 #define ONLCR 0000004 // 鍦ㄨ緭鍑烘椂灏嗘崲琛岀NL鏄犲皠鎴愬洖杞�-鎹㈣绗�CR-NL銆�
105 #define OCRNL 0000010 // 鍦ㄨ緭鍑烘椂灏嗗洖杞︾CR鏄犲皠鎴愭崲琛岀NL銆�
106 #define ONOCR 0000020 // 鍦�0鍒椾笉杈撳嚭鍥炶溅绗�CR銆�
107 #define ONLRET 0000040 // 鎹㈣绗�NL鎵ц鍥炶溅绗︾殑鍔熻兘銆�
108 #define OFILL 0000100 // 寤惰繜鏃朵娇鐢ㄥ~鍏呭瓧绗﹁€屼笉浣跨敤鏃堕棿寤惰繜銆�
109 #define OFDEL 0000200 // 濉厖瀛楃鏄�ASCII鐮�DEL銆傚鏋滄湭璁剧疆锛屽垯浣跨敤ASCII NULL銆�
110 #define NLDLY 0000400 // 閫夋嫨鎹㈣寤惰繜銆�
111 #define NL0 0000000 // 鎹㈣寤惰繜绫诲瀷0銆�
112 #define NL1 0000400 // 鎹㈣寤惰繜绫诲瀷1銆�
113 #define CRDLY 0003000 // 閫夋嫨鍥炶溅寤惰繜銆�
114 #define CR0 0000000 // 鍥炶溅寤惰繜绫诲瀷0銆�
115 #define CR1 0001000 // 鍥炶溅寤惰繜绫诲瀷1銆�
116 #define CR2 0002000 // 鍥炶溅寤惰繜绫诲瀷2銆�
117 #define CR3 0003000 // 鍥炶溅寤惰繜绫诲瀷3銆�
118 #define TABDLY 0014000 // 閫夋嫨姘村钩鍒惰〃寤惰繜銆�
119 #define TAB0 0000000 // 姘村钩鍒惰〃寤惰繜绫诲瀷0銆�
120 #define TAB1 0004000 // 姘村钩鍒惰〃寤惰繜绫诲瀷1銆�
121 #define TAB2 0010000 // 姘村钩鍒惰〃寤惰繜绫诲瀷2銆�
122 #define TAB3 0014000 // 姘村钩鍒惰〃寤惰繜绫诲瀷3銆�
123 #define XTABS 0014000 // 灏嗗埗琛ㄧTAB鎹㈡垚绌烘牸锛岃鍊艰〃绀虹┖鏍兼暟銆�
124 #define BSDLY 0020000 // 閫夋嫨閫€鏍煎欢杩熴€�
125 #define BS0 0000000 // 閫€鏍煎欢杩熺被鍨�0銆�
126 #define BS1 0020000 // 閫€鏍煎欢杩熺被鍨�1銆�
127 #define VTDLY 0040000 // 绾靛悜鍒惰〃寤惰繜銆�
128 #define VT0 0000000 // 绾靛悜鍒惰〃寤惰繜绫诲瀷0銆�
129 #define VT1 0040000 // 绾靛悜鍒惰〃寤惰繜绫诲瀷1銆�
130 #define FFDLY 0040000 // 閫夋嫨鎹㈤〉寤惰繜銆�
131 #define FF0 0000000 // 鎹㈤〉寤惰繜绫诲瀷0銆�
132 #define FF1 0040000 // 鎹㈤〉寤惰繜绫诲瀷1銆�
133
// termios缁撴瀯涓帶鍒舵ā寮忔爣蹇楀瓧娈�c_cflag鏍囧織鐨勭鍙峰父鏁帮紙8杩涘埗鏁帮級銆�
134 /* c_cflag bit meaning */ /* c_cflag 姣旂壒浣嶇殑鍚箟 */
135 #define CBAUD 0000017 // 浼犺緭閫熺巼浣嶅睆钄界爜銆�
136 #define B0 0000000 /* hang up */ /* 鎸傛柇绾胯矾 */
137 #define B50 0000001 // 娉㈢壒鐜� 50銆�
138 #define B75 0000002 // 娉㈢壒鐜� 75銆�
139 #define B110 0000003 // 娉㈢壒鐜� 110銆�
140 #define B134 0000004 // 娉㈢壒鐜� 134銆�
141 #define B150 0000005 // 娉㈢壒鐜� 150銆�
142 #define B200 0000006 // 娉㈢壒鐜� 200銆�
143 #define B300 0000007 // 娉㈢壒鐜� 300銆�
144 #define B600 0000010 // 娉㈢壒鐜� 600銆�
145 #define B1200 0000011 // 娉㈢壒鐜� 1200銆�
146 #define B1800 0000012 // 娉㈢壒鐜� 1800銆�
147 #define B2400 0000013 // 娉㈢壒鐜� 2400銆�
148 #define B4800 0000014 // 娉㈢壒鐜� 4800銆�
149 #define B9600 0000015 // 娉㈢壒鐜� 9600銆�
150 #define B19200 0000016 // 娉㈢壒鐜� 19200銆�
151 #define B38400 0000017 // 娉㈢壒鐜� 38400銆�
152 #define EXTA B19200 // 鎵╁睍娉㈢壒鐜�A銆�
153 #define EXTB B38400 // 鎵╁睍娉㈢壒鐜�B銆�
154 #define CSIZE 0000060 // 瀛楃浣嶅搴﹀睆钄界爜銆�
155 #define CS5 0000000 // 姣忓瓧绗�5姣旂壒浣嶃€�
156 #define CS6 0000020 // 姣忓瓧绗�6姣旂壒浣嶃€�
157 #define CS7 0000040 // 姣忓瓧绗�7姣旂壒浣嶃€�
158 #define CS8 0000060 // 姣忓瓧绗�8姣旂壒浣嶃€�
159 #define CSTOPB 0000100 // 璁剧疆涓や釜鍋滄浣嶏紝鑰屼笉鏄�1涓€�
160 #define CREAD 0000200 // 鍏佽鎺ユ敹銆�
161 #define PARENB 0000400 // 寮€鍚緭鍑烘椂浜х敓濂囧伓浣嶃€佽緭鍏ユ椂杩涜濂囧伓鏍¢獙銆�
162 #define PARODD 0001000 // 杈撳叆/杈撳叆鏍¢獙鏄鏍¢獙銆�
163 #define HUPCL 0002000 // 鏈€鍚庤繘绋嬪叧闂悗鎸傛柇銆�
164 #define CLOCAL 0004000 // 蹇界暐璋冨埗瑙h皟鍣�(modem)鎺у埗绾胯矾銆�
165 #define CIBAUD 03600000 /* input baud rate (not used) */ /* 杈撳叆娉㈢壒鐜�(鏈娇鐢�) */
166 #define CRTSCTS 020000000000 /* flow control */ /* 娴佹帶鍒� */
167
// termios缁撴瀯涓湰鍦版ā寮忔爣蹇楀瓧娈�c_lflag鐨勭鍙峰父鏁般€�
168 /* c_lflag bits */ /* c_lflag姣旂壒浣� */
169 #define ISIG 0000001 // 褰撴敹鍒板瓧绗�INTR銆�QUIT銆�SUSP鎴�DSUSP锛屼骇鐢熺浉搴旂殑淇″彿銆�
170 #define ICANON 0000002 // 寮€鍚鑼冩ā寮忥紙鐔熸ā寮忥級銆�
171 #define XCASE 0000004 // 鑻ヨ缃簡ICANON锛屽垯缁堢鏄ぇ鍐欏瓧绗︾殑銆�
172 #define ECHO 0000010 // 鍥炴樉杈撳叆瀛楃銆�
173 #define ECHOE 0000020 // 鑻ヨ缃簡ICANON锛屽垯ERASE/WERASE灏嗘摝闄ゅ墠涓€瀛楃/鍗曡瘝銆�
174 #define ECHOK 0000040 // 鑻ヨ缃簡ICANON锛屽垯KILL瀛楃灏嗘摝闄ゅ綋鍓嶈銆�
175 #define ECHONL 0000100 // 濡傝缃簡ICANON锛屽垯鍗充娇ECHO娌℃湁寮€鍚篃鍥炴樉NL瀛楃銆�
176 #define NOFLSH 0000200 // 褰撶敓鎴�SIGINT鍜�SIGQUIT淇″彿鏃朵笉鍒锋柊杈撳叆杈撳嚭闃熷垪锛屽綋
// 鐢熸垚SIGSUSP淇″彿鏃讹紝鍒锋柊杈撳叆闃熷垪銆�
177 #define TOSTOP 0000400 // 鍙戦€�SIGTTOU淇″彿鍒板悗鍙拌繘绋嬬殑杩涚▼缁勶紝璇ュ悗鍙拌繘绋嬭瘯鍥惧啓
// 鑷繁鐨勬帶鍒剁粓绔€�
178 #define ECHOCTL 0001000 // 鑻ヨ缃簡ECHO锛屽垯闄�TAB銆�NL銆�START鍜�STOP浠ュ鐨�ASCII
// 鎺у埗淇″彿灏嗚鍥炴樉鎴愯薄^X寮忔牱锛�X鍊兼槸鎺у埗绗�+0x40銆�
179 #define ECHOPRT 0002000 // 鑻ヨ缃簡ICANON鍜�IECHO锛屽垯瀛楃鍦ㄦ摝闄ゆ椂灏嗘樉绀恒€�
180 #define ECHOKE 0004000 // 鑻ヨ缃簡ICANON锛屽垯KILL閫氳繃鎿﹂櫎琛屼笂鐨勬墍鏈夊瓧绗﹁鍥炴樉銆�
181 #define FLUSHO 0010000 // 杈撳嚭琚埛鏂般€傞€氳繃閿叆DISCARD瀛楃锛岃鏍囧織琚炕杞€�
182 #define PENDIN 0040000 // 褰撲笅涓€涓瓧绗︽槸璇绘椂锛岃緭鍏ラ槦鍒椾腑鐨勬墍鏈夊瓧绗﹀皢琚噸鏄俱€�
183 #define IEXTEN 0100000 // 寮€鍚疄鐜版椂瀹氫箟鐨勮緭鍏ュ鐞嗐€�
184
185 /* modem lines */ /* modem绾胯矾淇″彿绗﹀彿甯告暟 */
186 #define TIOCM_LE 0x001 // 绾胯矾鍏佽(Line Enable)銆�
187 #define TIOCM_DTR 0x002 // 鏁版嵁缁堢灏辩华(Data Terminal Ready)銆�
188 #define TIOCM_RTS 0x004 // 璇锋眰鍙戦€�(Request to Send)銆�
189 #define TIOCM_ST 0x008 // 涓茶鏁版嵁鍙戦€�(Serial Transfer)銆�[??]
190 #define TIOCM_SR 0x010 // 涓茶鏁版嵁鎺ユ敹(Serial Receive)銆�[??]
191 #define TIOCM_CTS 0x020 // 娓呴櫎鍙戦€�(Clear To Send)銆�
192 #define TIOCM_CAR 0x040 // 杞芥尝鐩戞祴(Carrier Detect)銆�
193 #define TIOCM_RNG 0x080 // 鍝嶉搩鎸囩ず(Ring indicate)銆�
194 #define TIOCM_DSR 0x100 // 鏁版嵁璁惧灏辩华(Data Set Ready)銆�
195 #define TIOCM_CD TIOCM_CAR
196 #define TIOCM_RI TIOCM_RNG
197
198 /* tcflow() and TCXONC use these */ /* tcflow()鍜�TCXONC浣跨敤杩欎簺绗﹀彿甯告暟 */
199 #define TCOOFF 0 // 鎸傝捣杈撳嚭锛堟槸"Terminal Control Output OFF"鐨勭缉鍐欙級銆�
200 #define TCOON 1 // 閲嶅惎琚寕璧风殑杈撳嚭銆�
201 #define TCIOFF 2 // 绯荤粺浼犺緭涓€涓�STOP瀛楃锛屼娇璁惧鍋滄鍚戠郴缁熶紶杈撴暟鎹€�
202 #define TCION 3 // 绯荤粺浼犺緭涓€涓�START瀛楃锛屼娇璁惧寮€濮嬪悜绯荤粺浼犺緭鏁版嵁銆�
203
204 /* tcflush() and TCFLSH use these */ /* tcflush()鍜�TCFLSH浣跨敤杩欎簺绗﹀彿甯告暟 */
205 #define TCIFLUSH 0 // 娓呮帴鏀跺埌鐨勬暟鎹絾涓嶈銆�
206 #define TCOFLUSH 1 // 娓呭凡鍐欑殑鏁版嵁浣嗕笉浼犻€併€�
207 #define TCIOFLUSH 2 // 娓呮帴鏀跺埌鐨勬暟鎹絾涓嶈銆傛竻宸插啓鐨勬暟鎹絾涓嶄紶閫併€�
208
209 /* tcsetattr uses these */ /* tcsetattr()浣跨敤杩欎簺绗﹀彿甯告暟 */
210 #define TCSANOW 0 // 鏀瑰彉绔嬪嵆鍙戠敓銆�
211 #define TCSADRAIN 1 // 鏀瑰彉鍦ㄦ墍鏈夊凡鍐欑殑杈撳嚭琚紶杈撲箣鍚庡彂鐢熴€�
212 #define TCSAFLUSH 2 // 鏀瑰彉鍦ㄦ墍鏈夊凡鍐欑殑杈撳嚭琚紶杈撲箣鍚庡苟涓斿湪鎵€鏈夋帴鏀跺埌浣�
// 杩樻病鏈夎鍙栫殑鏁版嵁琚涪寮冧箣鍚庡彂鐢熴€�
213
// 浠ヤ笅杩欎簺鍑芥暟鍦ㄧ紪璇戠幆澧冪殑鍑芥暟搴�libc.a涓疄鐜帮紝鍐呮牳涓病鏈夈€傚湪鍑芥暟搴撳疄鐜颁腑锛岃繖浜涘嚱鏁伴€氳繃
// 璋冪敤绯荤粺璋冪敤ioctl()鏉ュ疄鐜般€傛湁鍏�ioctl()绯荤粺璋冪敤锛岃鍙傝fs/ioctl.c绋嬪簭銆�
// 杩斿洖termios_p鎵€鎸�termios缁撴瀯涓殑鎺ユ敹娉㈢壒鐜囥€�
214 extern speed_t cfgetispeed(struct termios *termios_p);
// 杩斿洖termios_p鎵€鎸�termios缁撴瀯涓殑鍙戦€佹尝鐗圭巼銆�
215 extern speed_t cfgetospeed(struct termios *termios_p);
// 灏�termios_p鎵€鎸�termios缁撴瀯涓殑鎺ユ敹娉㈢壒鐜囪缃负speed銆�
216 extern int cfsetispeed(struct termios *termios_p, speed_t speed);
// 灏�termios_p鎵€鎸�termios缁撴瀯涓殑鍙戦€佹尝鐗圭巼璁剧疆涓�speed銆�
217 extern int cfsetospeed(struct termios *termios_p, speed_t speed);
// 绛夊緟fildes鎵€鎸囧璞″凡鍐欒緭鍑烘暟鎹浼犻€佸嚭鍘汇€�
218 extern int tcdrain(int fildes);
// 鎸傝捣/閲嶅惎fildes鎵€鎸囧璞℃暟鎹殑鎺ユ敹鍜屽彂閫併€�
219 extern int tcflow(int fildes, int action);
// 涓㈠純fildes鎸囧畾瀵硅薄鎵€鏈夊凡鍐欎絾杩樻病浼犻€佷互鍙婃墍鏈夊凡鏀跺埌浣嗚繕娌℃湁璇诲彇鐨勬暟鎹€�
220 extern int tcflush(int fildes, int queue_selector);
// 鑾峰彇涓庡彞鏌�fildes瀵瑰簲瀵硅薄鐨勫弬鏁帮紝骞跺皢鍏朵繚瀛樺湪termios_p鎵€鎸囩殑鍦版柟銆�
221 extern int tcgetattr(int fildes, struct termios *termios_p);
// 濡傛灉缁堢浣跨敤寮傛涓茶鏁版嵁浼犺緭锛屽垯鍦ㄤ竴瀹氭椂闂村唴杩炵画浼犺緭涓€绯诲垪0鍊兼瘮鐗逛綅銆�
222 extern int tcsendbreak(int fildes, int duration);
// 浣跨敤termios缁撴瀯鎸囬拡termios_p鎵€鎸囩殑鏁版嵁锛岃缃笌缁堢鐩稿叧鐨勫弬鏁般€�
223 extern int tcsetattr(int fildes, int optional_actions,
224 struct termios *termios_p);
225
226 #endif
227