绋嬪簭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