而當我們在操作的時候,需要用到某一核心本身不包含的元件,所以就需要我們動態地去新增模組,這就是「核心模組」機制。
而模組地新增應該怎麼去做呢?
hello world 範例**:
#include#includestatic int hello_init(void)
static void hello_exit(void)
module_init(hello_init);
module_exit(hello_exit);
(1)模組載入函式 通過巨集指定 :module_init
本例的模組載入函式為 module_init(hello_init);
(2) 模組解除安裝函式 通過巨集指定:module_exit
本例的模組解除安裝函式為 module_exit(hello_exit);
makefile 範例**:
ifneq ($(kernelrelease),)
obj-m := example.o
else
kdir :=/usr/src/linux-headers-4.10.0-28
all:
make -c $(kdir) m=$(pwd) modules
clean:
rm -f *.ko *.o *.mod.o *mod.c *.symvers
endif
ifneq :為一判斷語句,與下面的else對應。
obj-m :=example.o 表示為生成的目標檔案,example 為你的源**的命名,自己代換即可。
kdir := /usr/src/linux-headers-4.10.0-28 此為核心的位置,每個系統可能不一樣,也需要自己代換。
直接在makefile目錄下執行make即可。
insmod 載入(insmod example.ko)
rmmod 解除安裝 (rmmod example)
Linux核心動態載入自定義模組
畢設是做乙個網路方面的專案,需要自己寫netfilter模組,今天研究了一下午怎麼往linux核心上載入自定義模組,遇到了很多問題,記錄一下心得。簡單起見,以乙個helloworld模組為例來說。核心是3.10版本的。include include static inthello init void...
linux核心動態除錯技術
動態除錯功能就是你可以決定在程式執行過程中是否要 pr debug dev dbg print hex dump debug print hex dump bytes 這些函式正常執行起來。編譯核心 開啟config debug fs和config dynamic debug echo n file...
Linux向核心新增模組
linux核心程式設計的基礎是向核心新增自己的模組。下面就以hellomod為例,簡單的介紹一下向核心新增模組。1 編寫 hellomod.c include 所有的模組都要使用標頭檔案module.h include 標頭檔案kernel.h包含了常用的核心函式 include 包含了巨集 ini...