18.8. tty_struct 結(jié)構(gòu)的細(xì)節(jié)

2018-02-24 15:50 更新

18.8.?tty_struct 結(jié)構(gòu)的細(xì)節(jié)

tty_struct 變量被 tty 核心用來保持當(dāng)前的特定 tty 端口的狀態(tài). 幾乎它的所有的朋友都只被 tty 核心使用, 有幾個例外. 一個 tty 驅(qū)動可以使用的成員在此描述:

unsigned long flags;
tty 設(shè)備的當(dāng)前狀態(tài). 這是一個位段變量, 并且通過下面的宏定義存取:

TTY_THROTTLED
當(dāng)驅(qū)動以及有抑制函數(shù)被調(diào)用. 不應(yīng)當(dāng)被一個 tty 驅(qū)動設(shè)置, 只有 tty 核心.

TTY_IO_ERROR
由驅(qū)動設(shè)置當(dāng)它不想任何數(shù)據(jù)被讀出或?qū)懭腧?qū)動. 如果一個用戶程序試圖做這個, 它接收一個 -EIO 錯誤從內(nèi)核中. 這常常在設(shè)備被關(guān)閉時設(shè)置.

TTY_OTHER_CLOSED
只由 pty 驅(qū)動使用來通知, 當(dāng)端口已經(jīng)被關(guān)閉.

TTY_EXCLUSIVE
由 tty 核心設(shè)置來指示一個端口在獨占模式并且只能一次由一個用戶存取.

TTY_DEBUG
內(nèi)核中任何地方都不用.

TTY_DO_WRITE_WAKEUP
如果被設(shè)置, 線路規(guī)程的 write_wakeup 函數(shù)被允許來被調(diào)用. 常常在 tty_driver 調(diào)用 wake_up_interruptible 函數(shù)的同一時間被調(diào)用.

TTY_PUSH
只被缺省的 tty 線路規(guī)程內(nèi)部使用.

TTY_CLOSING
tty 核心用來跟蹤是否一個端口在那個時刻及時處于關(guān)閉過程.

TTY_DONT_FLIP
被缺省的 tty 線路規(guī)程用來通知 tty 核心, 它不應(yīng)當(dāng)改變 flip 緩沖, 當(dāng)它被置位.

TTY_HW_COOK_OUT
如果被一個 tty 驅(qū)動設(shè)置, 它通知線路規(guī)程應(yīng)當(dāng)"烹調(diào)"發(fā)送給它的輸出. 如果它沒有設(shè)置, 線路規(guī)程成塊拷貝驅(qū)動的輸出; 否則, 它不得不為線路改變將單個發(fā)送的字節(jié)逐個求值. 這個標(biāo)志應(yīng)當(dāng)通常不被 tty 驅(qū)動設(shè)置.

TTY_HW_COOK_IN
幾乎和設(shè)置在驅(qū)動中的 flag 變量中的 TTY_DRIVER_REAL_RAW 標(biāo)志一致. 這個標(biāo)志通常應(yīng)當(dāng)不被 tty 驅(qū)動設(shè)置.

TTY_PTY_LOCK
pty 驅(qū)動用來加鎖和解鎖一個端口.

TTY_NO_WRITE_SPLIT
如果設(shè)置, tty 核心不將對 tty 驅(qū)動的寫分成正常大小的塊. 這個值不應(yīng)當(dāng)用來阻止對 tty 端口通過發(fā)送大量數(shù)據(jù)到端口的DoS攻擊,

struct tty_flip_buffer flip;
給 tty 設(shè)備的 flip 緩沖.

struct tty_ldisc ldisc;
給 tty 設(shè)備的線路規(guī)程.

wait_queue_head_t write_wait;
給 tty 寫函數(shù)的 wait_queue. 一個 tty 驅(qū)動應(yīng)當(dāng)喚醒它,當(dāng)它可以接收更多數(shù)據(jù)時.

struct termios *termios;
指向 tty 設(shè)備的當(dāng)前 termios 設(shè)置的指針.

unsigned char stopped:1;
指示是否 tty 設(shè)備被停止. tty 驅(qū)動可以設(shè)置這個值.

unsigned char hw_stopped:1;
指示是否 tty 設(shè)備的已經(jīng)被停止. tty 驅(qū)動可以設(shè)置這個值.

unsigned char low_latency:1;
指示是否 tty 設(shè)備是一個低反應(yīng)周期的設(shè)備, 能夠高速接收數(shù)據(jù). tty 驅(qū)動可以設(shè)置這個值.

unsigned char closing:1;
指示是否 tty 設(shè)備在關(guān)閉端口當(dāng)中. tty 驅(qū)動可以設(shè)置這個值.

struct tty_driver driver;
當(dāng)前控制這個 tty 設(shè)備的 tty_driver 結(jié)構(gòu).

void *driver_data;
指針, tty_driver 可以用來存儲對于 tty 驅(qū)動本地的數(shù)據(jù). 這個變量不被 tty 核心修改.

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號