linux内核模块

综述:如今linux内核整体框架十分庞大,我们如果直接把所有所需的功能编译进内核,会导致内核十分庞大,且在现有内核中我们无法对其增减。所以linux提供一种机制--模块。我们可以根据需要,对模块进行删减。    
一)一个linux内核模块主要由如下几个部分组成    
1 模块加载函数    当通过insmod或者modprobe命令加载内核模块时, xxx_init会被执行。
static int _init xxx_init(void)
{    
/*****函数体******/
}    
注意还要通过如下代码,告知内核,此为模块加载函数        
module_init( xxx_init);

2 模块卸载函数     当通过执行rmmod命令时, xxx_exit该函数会被执行。
static int _exit  xxx_exit(void)
{    
/*****函数体******/
}        
注意还要通过如下代码,告知内核,此为模块卸载函数        
modul_exit( xxx_exit);    
3 模块许可证声明    
许可证声明描述内核的许可权限,如果不声明许可证,将收到内核被污染的警告。    
相关代码为:MODULE_LICENSE("GPL");    
4 模块参数    (可选)
模块参数是模块被加载时可以传递给它的值。    
相关操作如下:    
static int mod_num=0;    
module_param(mod_num,int,S_IRUGO);  //函数参数依次为 变量名,类型,读/写权限        
insmod xxx.ko mod_num=100   //在用户运行时输入该命令,则mod_num将被赋值为100    
我们可以在/sys/module/xxx/parameters 目录下使用 cat  mod_num 命令查看mod_num的值
5   导出符号    
若导出,其他模块则可以使用本模块的变量或函数。    
相关代码如下    
void xxx_fun()    
{    
.....   
}
EXPORT_SYMBOL_GPL(xxx_fun);    
6 模块声明与描述    
我们可以用    
MODULE_AUTHOR(author);    
MODULE_VERSION(version_string);    
并且我们可以使用如下命令。查看模块的信息    
modinfo <模块名>   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值