核心符號表

2021-10-03 02:55:29 字數 513 閱讀 1859

linux核心為了實現模組化,需要提供乙個公共的核心符號表,它包含了所有的全域性核心項(函式以及變數)的位址。當模組載入到核心中後,它所匯出的任何符號都將成為核心公共符號表的一部分。核心模組只需要實現自己的功能而無需匯出任何符號,但這樣其他模組將無法使用該模組的功能,

乙個新的模組可以使用自己其他模組匯出的符號,這樣可以實現在其他模組的基礎上層疊新的模組,如msdos檔案系統依賴於由fat模組匯出的符號,usb輸入裝置模組會層疊在usbcore和input模組之上。模組層疊技術在複雜專案中非常有用,如果以裝置驅動程式的形式實現乙個新的軟體抽象,則可以為硬體相關的實現提供乙個「插頭」。modprobe是處理層疊模組的乙個非常實用的工具,它在裝載指定模組的同時也會載入該模組所以來的其他模組。因此乙個modprobe命令有的時候相當於執行了多次insmod命令。

當模組需要向其他模組匯出符號時,應當使用下面的巨集:

export_symbol(name);

export_symbol_gpl(name);

關於核心符號表

在編寫驅動的過程中,常會使用到export symbol巨集來將定義的函式名匯出到核心符號表。以前只是簡單的知道如果乙個模組中定義的函式要提供給其他模組呼叫,就必須進行匯出。這段時間在編譯單個模組的時候,因為沒編譯成功造成了函式沒定義而報警的情況,因此讓我有乙個機會對核心符號表的問題進行了乙個深入的...

linux核心符號表

所謂核心符號表就是在核心內部函式或變數中可供外部引用的函式和變數的符號表。在 2.6 核心下,使用以下命令可以看到核心符號表 引用 beyes linux beyes cat proc kallsyms more c0100000 t text c0100000 t startup 32 c0100...

linux核心符號表

所謂核心符號表就是在核心內部函式或變數中可供外部引用的函式和變數的符號表。在 2.6 核心下,使用以下命令可以看到核心符號表 引用 beyes linux beyes cat proc kallsyms more c0100000 t text c0100000 t startup 32 c0100...