EXPORT SYMBOL的作用簡單介紹

2021-08-20 11:36:11 字數 864 閱讀 5255

linux驅動**中經常可以看到這個巨集定義,那麼這個巨集定義的作用是什麼呢?

其實就是在這個巨集定義內的函式或者標籤對整個核心是公開其符號表,意思就是直接可以在核心了得其他模組直接呼叫,而不需要修改核心**。

乙個簡單的例子:

// module a (modulea.c)

#include#include#includestatic int func1(void)

static int __init modulea_init(void)

static void __exit modulea_exit(void)

// export the symbol of func1

export_symbol(func1);

module_init(modulea_init);

module_exit(modulea_exit);

// module b (moduleb.c)

#include#include#includestatic int func2(void)

static int __init moduleb_init(void)

static void __exit moduleb_exit(void)

module_init(moduleb_init);

module_exit(moduleb_exit);

注意:由於是模組b呼叫模組a,所以載入驅動的時候需要先載入模組a

insmod modulea.ko  

insmod moduleb.ko

巨集EXPORT SYMBOL在核心中的作用

module執行在kernel space,不能直接呼叫應用程式庫,只能呼叫核心函式。export symbol的作用是把核心函式的符號匯出,也就是將函式的入口位址匯出。module在執行的時候會根據kernel中的符號表 exportsymbol的名字表 去找symbol 根據核心函式loadmo...

核心EXPORT SYMBOL分析

在檢視核心驅動 的時候會經常看到在一些函式後面總會跟export symbol 這樣的巨集定義,通過網上查閱,它的作用大致總結如下 1 定義說明 把核心函式的符號匯出,也可以理解成將函式名作為符號匯出 符號的意思就是函式的入口位址,或者說是把這些符號和對應的位址儲存起來的,在核心執行的過程中,可以找...

作用域 的作用

1 作用域符號 的前面一般是類名稱,後面一般是該類的成員名稱,c 為例避免不同的類有名稱相同的成員而採用作用域的方式進行區分 如 a,b表示兩個類,在a,b中都有成員member。那麼 a member就表示類a中的成員member b member就表示類b中的成員member 2 全域性作用域符...