日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

linux 內(nèi)核模塊開發(fā)相關的文章搜集和模塊開發(fā)過程中的小技巧

 頭號碼甲 2022-07-18 發(fā)布于北京

最近需要開發(fā)一些內(nèi)核模塊,進行探究linux內(nèi)核的一些特征,現(xiàn)在把一些遇到的比較好的文章和知識點,進行簡要記錄和備忘;

內(nèi)核模塊開發(fā)相關鏈接:

內(nèi)核模塊開發(fā)過程遇到的知識點:

  • make命令,會隱士調(diào)用cc -c 命令,生成.o文件;所以在內(nèi)核模塊的makefile中,可以直接寫上:  obj-m += hello_mod.o 
  • 內(nèi)核模塊可以進行傳參:insmod module.ko [param1=value param2=value ...] 
  • 內(nèi)核模塊只能訪問內(nèi)核導出的函數(shù)和變量;EXPORT_SYMBOL(my_variable); 
  • 想要熟悉內(nèi)核模塊編程,寫一個linux設備驅(qū)動程序是比較好的學習方法; 
  • 在進行開發(fā)linux內(nèi)核模塊的時候,最好下載對應版本的linux內(nèi)核代碼,使用source insight或者vscode工具進行打開進行參考;因為經(jīng)常內(nèi)核中的API會改變;你參考別人的針對其他版本開發(fā)的代碼,編譯不通過;
  • 內(nèi)核模塊和內(nèi)核公用一個地址空間,可以使用所有模塊導出的符號表;我們可以使用內(nèi)存拷貝函數(shù),把用戶空間中的一些代碼段,拷貝到內(nèi)核態(tài)來完成。

最簡單的內(nèi)核模塊編譯示例:

//必要的頭文件
#include <linux/module.h> // included for all kernel modules
#include <linux/kernel.h> // include for KERN_INFO
#include <linux/init.h> // include for __init and __exit macros
//模塊許可證聲明(必須)
MODULE_LICENSE("Dual BSD/GPL"); // 通常使用BSD 和 GPL 雙協(xié)議
//聲明模塊的作者(可選)
MODULE_AUTHOR("Yaowen Xu");
MODULE_AUTHOR("YaoXu");
MODULE_DESCRIPTION("This is a simple example!");
MODULE_ALIAS("A simplest example");
//模塊加載函數(shù)(必須)
static int hello_init(void)
{
    printk(KERN_ALERT "Hello World enter/n");
    return 0;
}
//模塊卸載函數(shù)(必須)
static void hello_exit(void)
{
    printk(KERN_ALERT "Hello World exit/n");
}
//模塊的注冊
module_init(hello_init);
module_exit(hello_exit);
hello_mod.c
obj-m += hello_mod.o
all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
Makefile

編譯前需要安裝必要編譯工具和所需要的文件:

apt-get install build-essential linux-headers-$(uname -r) 

保持更新,轉(zhuǎn)載請注明出處;更多內(nèi)容請關注cnblogs.com/xuyaowen; 如果對您有幫助,請點擊推薦~!

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多