Linux 內核模塊程序結構


1.內核加載函數

  即我們常說的內核入口函數,當內核被加載的時候調用,在內核入口函數中多進行設備的注冊和初始化,其中最常用的莫過於module_init()。insmod xxx.ko的時候調用。

通常初始化函數定義為xxx_init,可以使用__init進行修飾

 

2.內核卸載函數

  內核模塊的出口,調用rmmod xxx.ko的時候調用,通常在該函數中進行注冊模塊的注銷和硬件的狀態的恢復;__exit修改該函數表明該函數為退出函數

加載和卸載示例如下:(均定義於linux/init.h,所以在編程的時候需要加上#include <linux/init.h>)

3.模塊許可聲明

  常見的形式為MODULE_LICENSE("GPL")  或  MODULE_LICENSE("GPL v2"),該聲明語句表明了內核的允許權限,支持GPL協議

4.模塊參數

  這個用到的比較少,格式為module_para(變量名,類型,權限);使用方式為insmod xxx.ko 變量名=xx,具體可看對於module_para介紹的博文,鏈接如下

http://blog.csdn.net/chdhust/article/details/8228888

5.模塊導出符號

  內核模塊可以將本模塊的符號導出,供其他模塊進行使用,使用方式有EXPORT_SYMBOL(符號名)和EXPORT_SYMBOL_GPL(符號名),EXPORT_SYMBOL_GPL只適用於包含GPL許可的模塊

6.模塊的聲明與描述

  MODULE_AUTHOR();     //模塊作者

  MODULE_DESCRIPTION(); //模塊描述

  MODULE_VERSION();   //模塊版本

  MODULE_DEVICE_TABLE();   //模塊設備表

  MODULE_ALIAS();       //模塊的別名

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com