linux 終端裝置 – 線路規程

來源:互聯網
上載者:User

line discipline(LDISC) 線路規程,是linux和類unix系統終端子系統的一個軟體驅動層。終端子系統從上到下可劃分為三層:

  • 頂層tty core驅動層提供字元裝置介面(因為所有的終端裝置都是字元裝置);
  • 最底層是tty driver層用來和硬體進行通訊,實現tty_operations供tty core和 LDISC層調用;
  • 中介層line discipline實現終端輸入輸出資料處理的策略。

line discipline把tty core和tty driver粘合在一起,策略的分離使得tty core和tty driver不需要關注資料文法處理,tty driver可以被相同的硬體複用,而只需更改line discipline。

linux終端裝置預設的線路規程是N_TTY,它從tty driver和應用程式接收資料,按照終端設定處理資料。對於輸入資料,它處理特殊的中斷字元(比如Control-C),刪除字元(backspace, delete)等等;對於輸出資料,它用CR/LF序列替換LF字元。當uart port用做普通串口時,使用N_TTY線路規程。

當uart port裝置用做serial modem 的internet撥號連線時,使用PPP線路規程處理資料;ppp LDISC把從uart core來的串口資料群組裝為PPP輸入packet,然後分發給網路通訊協定棧;ppp LDISC把從網路通訊協定棧發送來的資料拆包發送給uart port。

最初在閱讀linux tty終端系統代碼時,對LDISC非常困惑,除非想瞭解line discipline文法處理細節,完全可以越過大部分ldisc代碼。

ldisc工作於tty core和tty driver之間,ldisc需要為二者提供如下介面函數:

TTY core端介面:

open()

close()

hangup()

write()

flush_buffer()

chars_in_buffer()

set_termios()

read()

poll()

ioctl()

compat_ioctl()

TTY driver端介面:

receive_buf()

write_wakeup()

dcd_change()

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.