Linux設(shè)備驅(qū)動(dòng)程序的函數(shù)跳轉(zhuǎn)表
掃描二維碼
隨時(shí)隨地手機(jī)看文章
直接面向設(shè)各硬件的程序叫做設(shè)各驅(qū)動(dòng)程序。設(shè)各驅(qū)動(dòng)程序的作用就是在設(shè)各硬件寄存器的基礎(chǔ)上來(lái)實(shí)現(xiàn)系統(tǒng)上層的各項(xiàng)操作命令。這些函數(shù)雖然是直接面向設(shè)備的硬件編程,有一部分代碼是用匯編語(yǔ)言來(lái)編寫(xiě)的,但通常都會(huì)提供一個(gè)高級(jí)語(yǔ)言的接口,因此,它們的外觀看起來(lái)與一般的c函數(shù)沒(méi)有區(qū)別,例如read()、write()、open()、close()等?! ≡趌inux中,常用一個(gè)結(jié)構(gòu)作為調(diào)用上述設(shè)各驅(qū)動(dòng)程序中各個(gè)函數(shù)的跳轉(zhuǎn)表,即把指向上述設(shè)備驅(qū)動(dòng)程序函數(shù)的指針集中在一個(gè)結(jié)構(gòu)中。這個(gè)結(jié)構(gòu)就是我們已經(jīng)熟悉的file_opera_tions。為了清楚起見(jiàn)。把在文件系統(tǒng)中介紹的結(jié)構(gòu)file opcrattons的部分內(nèi)容列舉如下: 其實(shí),計(jì)算機(jī)的信息最終還是要落實(shí)到某個(gè)實(shí)際物理設(shè)備或裝置上的。當(dāng)然,文件作為一個(gè)具有邏輯關(guān)系的數(shù)據(jù)集合是存儲(chǔ)到磁盤(pán)這個(gè)物理設(shè)各中的。如果把磁盤(pán)中的數(shù)據(jù)塊看成是一個(gè)沒(méi)備·那么上面這個(gè)結(jié)構(gòu)中的各函數(shù)指針落實(shí)到具體文件i節(jié)點(diǎn)中的文件操作函數(shù)集,實(shí)質(zhì)上就是磁盤(pán)這個(gè)設(shè)備的驅(qū)動(dòng)程序,所以前面也曾經(jīng)把i節(jié)點(diǎn)叫做設(shè)備文件?! ≡瓌t上,作為不是以存儲(chǔ)數(shù)據(jù)為目的的諸如鼠標(biāo)、鍵盤(pán)、顯示器、打印機(jī)等其他設(shè)備,file_operations結(jié)構(gòu)中函數(shù)指針的名稱可以由程序設(shè)計(jì)人員任意命名.例如,write()實(shí)質(zhì)上就是處理器向設(shè)備輸出數(shù)據(jù),把它改為output()也未嘗不可。但由于將來(lái)要用文件系統(tǒng)來(lái)管理設(shè)備,也就是要把設(shè)各也要看做一種文件.所以這里還是應(yīng)該遵循文件系統(tǒng)的命名方法。