Linux tty驱动程序一 架构
tty 核心概覽如下圖所示:
可以看到,tty 架構(gòu)的劃分層次,由下至上的邏輯關(guān)系為:硬件 -> tty 驅(qū)動(dòng) -> tty 線路規(guī)程(也譯為行規(guī)程)-> tty 核心 -> 用戶層。
內(nèi)核負(fù)責(zé)控制 tty 設(shè)備的數(shù)據(jù)流,并且格式化這些數(shù)據(jù)。這使得 tty 驅(qū)動(dòng)程序把重點(diǎn)放在硬件數(shù)據(jù)處理上,而不必重點(diǎn)考慮使用常規(guī)方法與用戶空間交互。為了控制數(shù)據(jù)流,有許多不同的線路規(guī)程(line discipline)可虛擬地“插入”任何的 tty 設(shè)備上,這由不同的 tty 線路規(guī)程驅(qū)動(dòng)程序?qū)崿F(xiàn)。
數(shù)據(jù)發(fā)送流程:tty core 從用戶得到要下發(fā)到 tty 設(shè)備的數(shù)據(jù),然后把數(shù)據(jù)發(fā)送給 tty 線路規(guī)程驅(qū)動(dòng)程序,該驅(qū)動(dòng)程序負(fù)責(zé)把數(shù)據(jù)傳遞給 tty 驅(qū)動(dòng)程序。tty 驅(qū)動(dòng)程序?qū)?shù)據(jù)進(jìn)行格式化然后發(fā)送硬件。所謂格式化,就是在驅(qū)動(dòng)中轉(zhuǎn)換成硬件支持的協(xié)議和格式。
數(shù)據(jù)接收流程:從 tty 硬件那里接收的數(shù)據(jù)將回溯至 tty 驅(qū)動(dòng)程序,然后流入 tty 線路規(guī)程驅(qū)動(dòng)程序,接著是 tty 核心,最后用戶從 tty 核心那里得到數(shù)據(jù)。
有時(shí) tty 線路規(guī)程驅(qū)動(dòng)程序不是必須的,但是一般情況下是存在的。tty 線路規(guī)程對(duì)于 tty 驅(qū)動(dòng)程序是不透明的,也即相互之間不能直接通信,tty 驅(qū)動(dòng)程序的作用是將發(fā)送給它的數(shù)據(jù)格式化成硬件能理解的格式,并從硬件接收數(shù)據(jù)。tty 線路規(guī)程的作用是使用特殊的方法,把從用戶或硬件那里接收的數(shù)據(jù)格式化。這種格式化通常使用一些協(xié)議來轉(zhuǎn)換,如 PPP 或者 BlueTooth。
總結(jié)
以上是生活随笔為你收集整理的Linux tty驱动程序一 架构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言完数计算
- 下一篇: 马哥linux高薪中级-DNS