九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

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

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

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

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

  • make命令,會隱士調(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)核模塊只能訪問內(nèi)核導(dǎo)出的函數(shù)和變量;EXPORT_SYMBOL(my_variable); 
  • 想要熟悉內(nèi)核模塊編程,寫一個linux設(shè)備驅(qū)動程序是比較好的學(xué)習(xí)方法; 
  • 在進(jìn)行開發(fā)linux內(nèi)核模塊的時候,最好下載對應(yīng)版本的linux內(nèi)核代碼,使用source insight或者vscode工具進(jìn)行打開進(jìn)行參考;因為經(jīng)常內(nèi)核中的API會改變;你參考別人的針對其他版本開發(fā)的代碼,編譯不通過;
  • 內(nèi)核模塊和內(nèi)核公用一個地址空間,可以使用所有模塊導(dǎo)出的符號表;我們可以使用內(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)容請關(guān)注cnblogs.com/xuyaowen; 如果對您有幫助,請點擊推薦~!

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Linux驅(qū)動編程 step-by-step (一)
Linux內(nèi)核驅(qū)動模塊
開發(fā)一個簡單的內(nèi)核程序
2.6內(nèi)核模塊編程的簡單實現(xiàn):Hello world - linux - 小鄧的bolg
hello內(nèi)核模塊編譯的全過程
Linux驅(qū)動開發(fā)環(huán)境配置(內(nèi)核源碼樹構(gòu)造)
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服