乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

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

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

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

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

      • 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)核模塊編程,寫一個(gè)linux設(shè)備驅(qū)動(dòng)程序是比較好的學(xué)習(xí)方法; 
      • 在進(jìn)行開發(fā)linux內(nèi)核模塊的時(shí)候,最好下載對應(yīng)版本的linux內(nèi)核代碼,使用source insight或者vscode工具進(jìn)行打開進(jìn)行參考;因?yàn)榻?jīng)常內(nèi)核中的API會改變;你參考別人的針對其他版本開發(fā)的代碼,編譯不通過;
      • 內(nèi)核模塊和內(nèi)核公用一個(gè)地址空間,可以使用所有模塊導(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; 如果對您有幫助,請點(diǎn)擊推薦~!

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多