小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

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

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

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

內(nèi)核模塊開(kāi)發(fā)過(guò)程遇到的知識(shí)點(diǎn):

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

最簡(jiǎn)單的內(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");
}
//模塊的注冊(cè)
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)載請(qǐng)注明出處;更多內(nèi)容請(qǐng)關(guān)注cnblogs.com/xuyaowen; 如果對(duì)您有幫助,請(qǐng)點(diǎn)擊推薦~!

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多