Linux核心模組程式設計

2021-07-12 06:07:02 字數 894 閱讀 8976

目標:熟悉linux模組相關函式等

模組載入,例:

static int __init initialization_function(void)

module_init(initialization_function);

這裡__init:

#define __init  __attribute__((__section__(".init.text")))

此外,在.initcall.text還儲存乙份函式指標,初始化完成後,init所有區段都被釋放

此外,還有 __initdata可以用來初始化資料 如:

static int hello_data __initdata = 1;

模組解除安裝,例:

static void __exit cleanup_function(void)

module_exit(cleanup_function);

這裡__exit告訴核心若模組被編譯進核心(非m),則cleanup_function函式被忽略

同時也有__exitdata可以修飾資料

例:

static char *book_name = "dissecting linux device driver";

module_param(book_name, charp, s_irugo);

static int book_num = 4000;

module_param(book_num, int, s_irugo);

形參表為:引數名, 引數型別, 讀/寫許可權

用於匯出符號,這樣這些符號就可以被其他模組呼叫了

分別為模組的:作者、描述、版本、裝置表、別名

Linux核心模組程式設計

linux核心模組程式設計的資料有些紛繁複雜,有的過於簡單,有的過於龐雜,我試圖用筆記的形式想讀者展示怎樣來程序linux模組程式設計,力圖做到簡明扼要,這篇文章也是作為本人備忘的資料,所以有些地方過於簡略是難免的。本來這篇文章的目的就是讓使用者知其然,至於所以然還是請參考相應的資料,其實最好的資料...

linux 2 6 核心模組程式設計探索

乙個linux 核心模組程式設計的手記,未寫完不斷更新中 一 相關命令 0 檢視系統裝載了哪些 核心模組 lsmod modulename 1 載入核心模組 insmod modulename 2 解除安裝核心模組 rmmod modulename 3 建立裝置檔案 mknod filename d...

linux 2 6 核心模組程式設計探索

乙個linux 核心模組程式設計的手記,未寫完不斷更新中 一 相關命令 0 檢視系統裝載了哪些 核心模組 lsmod modulename 1 載入核心模組 insmod modulename 2 解除安裝核心模組 rmmod modulename 3 建立裝置檔案 mknod filename d...