1)終端設備數據發送和接收過程中的數據流和函數調用關係
2) tty 線路設置及流向
a、線路設置用戶空間接口 (用戶可用如下兩種方式改變 tty 設備的線路設置或者獲取當前線路設置)
1、調用用戶空間的 termios 庫函數
2、對 tty 設備節點進行 ioctl()調用
b、tty 驅動的操作
1、 、tty 驅動的set_termios 函數
說明:大部分 termios 用戶空間函數被庫轉換爲對驅動節點的 ioctl()調用,而 tty ioctl
中的大部分命令會被 tty 核心轉換爲對 tty
驅動的 set_termios()函數的調用
tty_operations中的 set_termios()函數原型爲:
void(*set_termios)(struct tty_struct *tty,struct termios *old);
2、 tty 驅動的 tiocmget 和 tiocmset 函數
對 TIOCMGET、TIOCMSET、TIOCMBIC
和 TIOCMBIS IO 控制命令的調用將被
tty 核心轉換爲對 tty
驅動 tiocmget()函數和 tiocmset()函數的調用,TIOCMGET 對應
tiocmget()函數,TIOCMSET、TIOCMBIC 和 TIOCMBIS 對應 tiocmset()函數
3、tty 驅動的 ioctl 函數
當用戶在 tty 設備節點上進行 ioctl()調用時,tty_operations 中的 ioctl()函數會被
tty 核 心調 用。 如 果 tty 驅動不知道如何處理傳遞給它的
ioctl 值 , 它 返回
–ENOIOCTLCMD,之後 tty 核心會執行一個通用的操作
參考資料:Linux 設備驅動開發詳解-宋寶華