linuxTTY體系結構基礎知識

一、終端設備的結構


Linux內核中 tty的層次結構圖所示,包含tty核心、tty線路規程和tty驅動。tty核心是對整個tty設備的抽象,對用戶提供統一的接口,tty線路規程是對傳輸數據的格式化,tty驅動則是面向tty設備的驅動,這是對設備的驅動,應該要我們來實現的,但是後面我們可以看到,對於串口驅動Linux還要進行抽象把共性提取出來封裝,使得整個驅動層次化簡單化。使得驅動的修改只要設計設備硬件的差異來,但是這樣使得設備驅動的結構體系比較複雜,過程層次太多,難於理解。

tty設備發送數據的流程爲:tty核心從一個用戶獲取將要發送給一個 tty設備的數據,tty核心將數據傳遞給tty線路規程驅動,接着數據被傳遞到tty驅動,tty驅動將數據轉換爲可以發送給硬件的格式。

接收數據的流程爲: 從tty硬件接收到的數據向上交給tty驅動,進入tty線路規程驅動,再進入 tty 核心,在這裏它被一個用戶獲取。儘管大多數時候tty核心和tty之間的數據傳輸會經歷tty線路規程的轉換,但是tty驅動與tty核心之間也可以直接傳輸數據。


二、TTY設備驅動結構


圖顯示了與tty相關的主要源文件及數據的流向。tty_io.c定義了tty 設備通用的file_operations結構體並實現了接口函數tty_register_driver()用於註冊tty設備,它會利fs/char_dev.c提供的接口函數註冊字符設備,與具體設備對應的tty驅動將實現tty_driver結構體中的成員函數。同時 tty_io.c也提供了tty_register_ldisc()接口函數用於註冊線路規程,n_tty.c文件則實現了tty_disc結構體中的成員。特定tty設備驅動的主體工作是填充tty_driver結構體中的成員,實現其中的成員函數。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章