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





