linux核心程式設計的基礎是向核心新增自己的模組。下面就以hellomod為例,簡單的介紹一下向核心新增模組。
(1)編寫 hellomod.c
#include //所有的模組都要使用標頭檔案module.h
#include //標頭檔案kernel.h包含了常用的核心函式
#include //包含了巨集_init和_exit,它們允許釋放和占用記憶體。
module_license("gpl"); //gnu公共許可證。
static int __init lkp_init(void)
static void __exit lkp_cleanup(void)
module_init(lkp_init);//這是驅動程式初始化的入口點,對於內建模組,核心在引導時呼叫該入口點,對於可載入模組則在該模組插入核心時才呼叫
module_exit(lkp_cleanup);
(2)把hellomod.c放到/usr/src/kernels/linux-2.6.20/drivers/char 目錄下。然後在char下的makefile中新增 obj-m +=hellomod.o
obj-m 生成module模組。
(3)回到核心的根目錄下,即/usr/src/kernels/linux-2.6.20下,執行make.
(4)當編譯完成後,會在/usr/src/kernels/linux-2.6.20/drivers/char目錄下看到hellomod.ko.
insmod hellomod.ko 向核心插入模組。如果想解除安裝這個模組,可以用rmmod hellomod. lsmod可列出模組名稱。
(5)上面的hellomod.c 中有個列印函式printk,該函式預設列印到系統檔案/var/log/messages。 可以看一下這裡面的資訊
tail /var/log/messages 列出最後十行的資訊。 tail 命令預設列出檔案最後十行資訊。
通過以上步驟,就成功的把自己的模組hellomod插入到linux核心中去了。對於linux核心程式設計,這是個最基礎的例子,還有很多深入的東西要學習。
Linux核心動態新增模組
而當我們在操作的時候,需要用到某一核心本身不包含的元件,所以就需要我們動態地去新增模組,這就是 核心模組 機制。而模組地新增應該怎麼去做呢?hello world 範例 include includestatic int hello init void static void hello exit ...
驅動模組的編寫 向核心新增系統呼叫函式
1.驅動模組的編寫 例子 在pc機原始碼目錄drivers arm emb mkdir demo 建乙個模組目錄 vim demo.c 編寫demo static int demo init void module init demo init static void demo exit void ...
Linux 驅動開發核心模組的新增
寫這篇部落格的目的是做一下筆記,便於自己查閱。首先給出核心模組源 當然是最最簡單的helloworld。include include module license gpl gpl 開源協議 static inthello init void static voidhello exit void m...