2.5. 內(nèi)核符號(hào)表

2018-02-24 15:49 更新

2.5.?內(nèi)核符號(hào)表

我們已經(jīng)看到 insmod 如何對(duì)應(yīng)共用的內(nèi)核符號(hào)來(lái)解決未定義的符號(hào). 表中包含了全局內(nèi)核項(xiàng)的地址 -- 函數(shù)和變量 -- 需要來(lái)完成模塊化的驅(qū)動(dòng). 當(dāng)加載一個(gè)模塊, 如何由模塊輸出的符號(hào)成為內(nèi)核符號(hào)表的一部分. 通常情況下, 一個(gè)模塊完成它自己的功能不需要輸出如何符號(hào). 你需要輸出符號(hào), 但是, 在任何別的模塊能得益于使用它們的時(shí)候.

新的模塊可以用你的模塊輸出的符號(hào), 你可以堆疊新的模塊在其他模塊之上. 模塊堆疊在主流內(nèi)核源碼中也實(shí)現(xiàn)了: msdos 文件系統(tǒng)依賴 fat 模塊輸出的符號(hào), 某一個(gè)輸入 USB 設(shè)備模塊堆疊在 usbcore 和輸入模塊之上.

模塊堆疊在復(fù)雜的工程中有用處. 如果一個(gè)新的抽象以驅(qū)動(dòng)程序的形式實(shí)現(xiàn), 它可能提供一個(gè)特定硬件實(shí)現(xiàn)的插入點(diǎn). 例如, video-for-linux 系列驅(qū)動(dòng)分成一個(gè)通用模塊, 輸出了由特定硬件的低層設(shè)備驅(qū)動(dòng)使用的符號(hào). 根據(jù)你的設(shè)置, 你加載通用的視頻模塊和你的已安裝硬件對(duì)應(yīng)的特定模塊. 對(duì)并口的支持和眾多可連接設(shè)備以同樣的方式處理, 如同 USB 內(nèi)核子系統(tǒng). 在并口子系統(tǒng)的堆疊在圖 并口驅(qū)動(dòng)模塊的堆疊 中顯示; 箭頭顯示了模塊和內(nèi)核編程接口間的通訊.

圖?2.2.?并口驅(qū)動(dòng)模塊的堆疊

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)