linux核心模組

來源:互聯網
上載者:User

lsmod實際上讀取並分析/proc/modules檔案

cat /proc/modules 

核心中已載入的模組的資訊存在於/sys/modules. /sys/module 是一個 sysfs 目錄層次, 包含當前載入模組的資訊. /proc/moudles 是舊式的, 那種資訊的單個檔案版本. 其中的條目包含了模組名, 每個模組佔用的記憶體數量, 以及使用計數. 另外的字串追加到每行的末尾來指定標誌, 對這個模組當前是活動的.

linux核心模組程式結構

1) 載入函數(一般需要)

當通過insmod或modprobe載入核心模組時, 模組的載入函數會自動被核心執行.

static int __init initialization_function(void){/*初始化代碼*/}module_init(initialization_function); 

2) 卸載函數(一般需要)

當通過rmmod或者modprobe -r卸載模組時.

static int __init cleanup_function(void){/*釋放代碼*/}module_exit(cleanup_function); 

3) 模組許可聲明(必須)

如果不聲明LICENSE, 模組被載入時, 會收到核心被汙染(kernel tained)警告.

MODULE_LICENSE("GPL"); 

可選的LICENSE有: “GPL”, “GPL v2″, “GPL and additional rights”, “Dual BSD/GPL”,

“Dual MPL/GPL”, “Proprietary”.

4) 模組參數(可選)

module_param(parm, parm_type, module_flags); 

如果許可權允許, 可以在/sys/modules/module_name/parameters/下面看到模組的參數.

5) 模組匯出符號(可選)

EXPORT_SYMBOL(符號名);EXPORT_SYMBOL_GPL(符號名); 

6) 模組作者等資訊(可選)

MODULE_AUTHOR(author);MODULE_DESCRIPTION(description);MODULE_VERSION(version_string);MODULE_DEVICE_TABLE(table_info);MODULE_ALIAS(alternate_name);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.