linux核心標頭檔案提供了乙個方便的方法用來管理符號的對模組外部的可見性,因此減少了命名空間的汙染(命名空間的名稱可能會與核心其他地方定義的名稱衝突),並且適當資訊隱藏。 如果你的模組需要輸出符號給其他模組使用,應當使用下面的巨集定義:
export_symbol(name);
export_symbol_gpl(name);
這兩個巨集均用於將給定的符號匯出到模組外. _gpl版本的巨集定義只能使符號對gpl許可的模組可用。 符號必須在模組檔案的全域性部分匯出,不能在函式中匯出,這是因為上述這兩個巨集將被擴充套件成乙個特殊用途的宣告,而該變數必須是全域性的。這個變數儲存於模組的乙個特殊的可執行部分(乙個"elf段" ),在裝載時,核心通過這個段來尋找模組匯出的變數(感興趣的讀者可以看獲知更詳細的資訊)。
linux模組中使用其它模組匯出的符號
步驟一 在被依賴的模組b中匯出要用的符號,如 int cat9555 state get inp void export symbol cat9555 state get inp 步驟二 編譯模組b,當前目錄下生成module.symvers檔案,將其複製到模組a的目錄下。開啟module.symv...
linux模組中使用其它模組匯出的符號
步驟一 在被依賴的模組b中匯出要用的符號,如 intcat9555 state get inp void export symbol cat9555 state get inp 步驟二 編譯模組b,當前目錄下生成module.symvers檔案,將其複製到模組a的目錄下。開啟module.symve...
16 驅動模組的符號表與符號匯出
檢視elf檔案的資訊 readelf test.ko a ko檔案組成 1 elf檔案頭 elf header magic 7f 45 4c 46 0101 0100 0000 0000 0000 0000 class elf32 data 2 s complement,little endian ...