TTY¶
電傳打字機 (TTY) 層負責所有這些序列裝置。包括像偽終端 (PTY) 這樣的虛擬裝置。
TTY 結構體¶
有幾個主要的 TTY 結構體。系統中每個 TTY 裝置都有一個對應的 struct tty_port。這些裝置由 TTY 驅動程式維護,即 struct tty_driver。此結構體描述了驅動程式,還包含對可在 TTY 上執行的操作的引用。它是 struct tty_operations。然後,在開啟時,會分配一個 struct tty_struct,並一直存在到最後關閉。在此期間,TTY 層會呼叫來自 struct tty_operations 的幾個回撥。
核心接收到的每個字元(來自裝置和使用者)都會透過預先選擇的 TTY 線路規程(簡稱為 ldisc;在 C 中,struct tty_ldisc_ops)。它的任務是按照特定的 ldisc 或使用者定義的方式轉換字元。預設的是 n_tty,它實現了回顯、訊號處理、作業控制、特殊字元處理等等。轉換後的字元將進一步傳遞給使用者/裝置,具體取決於源。
命名 TTY 結構體的詳細描述位於單獨的文件中
編寫 TTY 驅動程式¶
在開始編寫 TTY 驅動程式之前,必須首先考慮 序列 和 USB 序列 層。序列裝置的驅動程式通常可以使用這些特定的層之一來實現序列驅動程式。只有特殊裝置才應由 TTY 層直接處理。 如果您將要編寫這樣的驅動程式,請繼續閱讀。
TTY 驅動程式執行的典型 順序如下
分配並註冊 TTY 驅動程式(模組初始化)
建立並註冊 TTY 裝置(探測函式)
處理 TTY 操作和事件,如中斷(TTY 核心呼叫前者,裝置呼叫後者)
刪除正在消失的裝置(移除函式)
登出並釋放 TTY 驅動程式(模組退出)
關於驅動程式的步驟,即 1.、3. 和 5. 在 TTY 驅動程式和 TTY 操作 中詳細描述。對於其他兩個(裝置處理),請檢視 TTY 埠。
其他文件¶
其他文件可以在以下文件中找到