青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

edog

冰凍熱狗
數據加載中……

一個簡單的Linux驅動程序和Makefile

1、源程序

//hello.c

1.     #include <linux/init.h>   

2.     #include <linux/module.h>   

3.       

4.     MODULE_LICENSE("Dual BSD/GPL");  

5.       

6.     static int hello_init(void)  

7.     {  

8.         printk(KERN_ALERT "hello module!\n");  

9.         return 0;  

10. }  

11.   

12. static void hello_exit(void)  

13. {  

14.     printk(KERN_ALERT "bye module!\n");  

15. }  

16.   

17. module_init(hello_init);  

18. module_exit(hello_exit);  

 

2、驅動程序介紹

一個linux內核模塊主要由如下幾個部分組成:

1module加載函數。

 

當通過insmodmodprobe命令加載內核module時,module的加載函數會自動被內核運行,完成本module的相關初始化工作。

 

module加載函數通過module_init()函數向內核注冊。

 

2module卸載函數。

 

rmmod命令卸載某個模塊時,模塊的卸載函數會自動被內核執行,完成本模塊初始化的相反功能。

 

module卸載函數通過module_exit()函數向內核注冊。

 

3module許可聲明(必須)

 

許可證license聲明描述內核模塊的許可權限,如果不聲明license,模塊被加載時,將,收到內核被污染(kernel tainted)的警告。linux中可接受的license包括“GPL”,“GPL v2”,“Dual BSD/GPL”,“Dual MPL/GPL”等。

 

多數情況下,內核模塊應遵循GPL兼容許可權,2.6內核模塊最常見的是以MODULE_LICENSE("Dual BSD/GPL")語句聲明模塊采用BSD/GPL LICENSE

 

4)模塊參數(可選)

 

5)模塊到處符號(可選)

 

6)模塊作者等信息聲明(可選),如MODULE_AUTHOR(),MODULE_DESCRIPTION(),MODULE_ALIAS()等。

 

編譯得到hello.ko,然后insmod hello.ko加載模塊,rmmod hello.ko 卸載模塊。

 

 

linux內核的整體結構已經非常龐大,而其包含的組件也非常多,有兩種方法把需要的部分都包含在內核中

 

一,把所有功能都編譯進內核,但這回導致兩個問題,生成的內核會特別打,假如要把現在的內核增加或刪除功能,將不得不重新編譯整個內核。

 

二,使用模塊module,上述我們寫的最簡單驅動,就是一個模塊module,可以隨意的增加或刪除。

 

3Makefile文件

怎樣把hello.c源文件編譯成helo.ko內核模塊呢,同樣使用make,但這里的Makefile與一般的應用程序Makefile有所不同,驅動Makfile要指定內核源代碼位置,先看一個簡單的驅動Makefile

1.     obj-m := hello.o  

2.     KERNEL_DIR := /lib/modules/$(shell uname -r)/build  

3.     PWD := $(shell pwd)  

4.     all:  

5.         make -C $(KERNEL_DIR) SUBDIRS=$(PWD) modules  

6.     clean:  

7.         rm *.o *.ko *.mod.c  

8.       

9.     .PHONY:clean  

KERNEL_DIR為內核源代碼build目錄,我們知道,內核存放在/usr/src中,/lib/modules其實是連接到這個地方,在shell中執行uname -r會得到正在使用的完整內核版本號,這樣就選擇了適當的內核源碼。

PWD為源文件hello.c所在目錄。

make -C (大寫C make會進入KERNEL_DIR目錄執行此目錄下的Makefile,然后在返回PWD目錄執行自己寫的Makefile

4、在終端中make

1.     [root@localhost driver]# make  

2.     make -C /lib/modules/2.6.9-89.ELsmp/build SUBDIRS=/root/linux/driver modules  

3.     make[1]: Entering directory `/usr/src/kernels/2.6.9-89.EL-smp-i686'  

4.       CC [M]  /root/linux/driver/hello.o  

5.       Building modules, stage 2.  

6.       MODPOST  

7.       CC      /root/linux/driver/hello.mod.o  

8.       LD [M]  /root/linux/driver/hello.ko  

9.     make[1]: Leaving directory `/usr/src/kernels/2.6.9-89.EL-smp-i686'

這樣hello.ko驅動模塊就產生好了。

 

5insmod加載

1.      [root@localhost driver]# insmod hello.ko

6lsmod查看模塊

lsmod一下就會看到hello模塊的存在了,并且在系統的日志/var/log/messages中會記錄模塊的輸出,也就是

1.     printk(KERN_ALERT "hello module!\n");  

輸出的hello module

1.     <pre name="code" class="plain">[root@localhost driver]#tail -1 /var/log/messages  

2.     Oct 13 11:27:07 localhost kernel: hello module! 

7rmmod helle 卸載hello.ko

 

posted on 2013-10-18 22:18 冰凍熱狗 閱讀(9905) 評論(0)  編輯 收藏 引用 所屬分類: Linux設備驅動開發

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产日韩av高清| 亚洲午夜电影在线观看| 亚洲一区在线观看视频| 先锋影音国产一区| 国产精品久久久久久久久免费 | 日韩视频不卡| 久热综合在线亚洲精品| 久久中文久久字幕| 影音先锋亚洲一区| 久久久久久高潮国产精品视| 欧美成人综合一区| 亚洲精品资源| 国产精品视频1区| 久久综合久久综合久久| 免费观看一级特黄欧美大片| 日韩视频在线观看免费| 中文日韩欧美| 亚洲国产精品www| 老巨人导航500精品| 久久一区二区三区av| 午夜精品一区二区三区在线播放 | 久久精品国产久精国产一老狼 | 日韩视频在线观看| 性欧美xxxx视频在线观看| 久久久美女艺术照精彩视频福利播放| 久久亚洲欧美| 欧美午夜片在线观看| 久久精品国产久精国产思思| 欧美激情 亚洲a∨综合| 欧美在线网站| 亚洲手机成人高清视频| 欧美一区二区三区在线观看| 亚洲视频在线观看一区| 久久久久久日产精品| 国产精品久久久久久av福利软件 | 国产精品大全| 亚洲高清资源综合久久精品| 国产精品乱码| 亚洲高清精品中出| 欧美影院在线| 午夜精品视频在线观看| 亚洲欧洲综合另类| 在线不卡欧美| 亚洲综合色视频| 亚洲日韩视频| 亚洲欧洲另类国产综合| 欧美在线日韩| 午夜精品一区二区三区在线 | 一区二区三区欧美在线观看| 日韩视频亚洲视频| 久久久久久久波多野高潮日日| 欧美三级电影大全| 欧美日韩视频在线一区二区| 欧美激情一区二区三区在线| 国产日韩精品在线| 欧美视频官网| 亚洲国产欧美一区二区三区同亚洲| 一区久久精品| 激情自拍一区| 久久国产精品一区二区三区四区| 久久精品国产99| 亚洲色图综合久久| 欧美亚洲成人网| 亚洲深夜福利视频| 亚洲一区二区网站| 亚洲麻豆一区| 亚洲在线国产日韩欧美| 欧美日韩免费观看一区| 9色精品在线| 久久精品国产综合精品| 亚洲少妇最新在线视频| 欧美视频手机在线| 亚洲综合丁香| 亚洲欧美日韩久久精品| 欧美激情网友自拍| 国产精品青草久久久久福利99| 亚洲视频网站在线观看| 一区二区91| 国产伦精品一区二区三区四区免费 | 欧美日韩国产综合视频在线| 国产精品实拍| 午夜伦欧美伦电影理论片| 亚洲一品av免费观看| 国产美女在线精品免费观看| 久久精品国产亚洲精品| 久久精品欧美日韩精品| 欧美日韩另类字幕中文| 一区二区三区久久网| 久久久久久久高潮| 亚洲美女一区| 国产精品亚洲综合| 狂野欧美激情性xxxx| 在线一区观看| 国产目拍亚洲精品99久久精品| 久久精品一区四区| 欧美大片一区二区| 精品69视频一区二区三区| 欧美mv日韩mv亚洲| 久久精品视频在线观看| 亚洲精品乱码久久久久久日本蜜臀 | 国产欧美在线看| 亚洲三级免费| 小处雏高清一区二区三区| 久久久99久久精品女同性| 一本色道婷婷久久欧美| 香港成人在线视频| 99热在这里有精品免费| 久久一综合视频| 欧美极品色图| 久久久99免费视频| 欧美日韩国产片| 久久综合影音| 国产精品亚洲综合一区在线观看| 久久综合中文色婷婷| 国产精品激情av在线播放| 牛牛国产精品| 国产欧美日韩视频一区二区| 亚洲欧洲在线免费| 欧美成人精品激情在线观看| 午夜精品久久久久久久蜜桃app| 美女国产一区| 亚洲片区在线| 久久精品视频播放| 久久av二区| 国产精品白丝jk黑袜喷水| 亚洲第一区中文99精品| 免费日韩精品中文字幕视频在线| 午夜激情久久久| 欧美日韩1080p| 亚洲黄色成人久久久| 在线精品国产欧美| 亚洲日本激情| 国产精品男女猛烈高潮激情| 亚洲欧洲一区| 亚洲精品一区在线| 欧美v国产在线一区二区三区| 久久一区精品| 在线国产欧美| 免费在线成人| 欧美激情视频一区二区三区在线播放 | av成人激情| 国产午夜精品理论片a级大结局 | 久久亚洲精品一区二区| 久久婷婷久久| 伊人男人综合视频网| 久久久久国色av免费观看性色| 久久亚洲午夜电影| 玉米视频成人免费看| 久久久视频精品| 欧美黑人在线观看| 99re6这里只有精品| 欧美日韩亚洲成人| 亚洲午夜在线观看视频在线| 性欧美1819sex性高清| 国产日韩av一区二区| 久久久精彩视频| 亚洲高清免费在线| 亚洲视频一二| 国产视频一区二区在线观看| 欧美一站二站| 欧美激情视频网站| 亚洲一区二区黄色| 免费一级欧美片在线观看| 亚洲国产精品久久久久秋霞不卡 | 欧美亚州在线观看| 亚洲影视九九影院在线观看| 久久爱www久久做| 在线电影国产精品| 欧美国产综合一区二区| 一本色道久久综合狠狠躁篇的优点| 亚洲一区二区精品| 国内成人精品2018免费看| 亚洲国产高清在线观看视频| 亚洲精品久久久久久久久久久 | 伊人成人网在线看| 欧美国产一区二区| 亚洲一区二区三区影院| 久久综合国产精品| aa级大片欧美三级| 国产一区二区三区无遮挡| 中文成人激情娱乐网| 久久久国产一区二区| 最新高清无码专区| 国产欧美日韩视频一区二区三区| 久久综合狠狠| 亚洲在线播放电影| 91久久综合亚洲鲁鲁五月天| 欧美一级视频免费在线观看| 亚洲国产成人av| 国产精品自在在线| 欧美极品在线视频| 久久深夜福利免费观看| 日韩一级精品| 欧美不卡在线视频| 欧美在线高清视频| 亚洲无线视频| 91久久黄色| 亚洲大片精品永久免费| 国产日韩欧美亚洲一区| 欧美午夜性色大片在线观看|