注: 参考整理自《Linux设备驱动开发详解》
一 Linux 内核模块 :
1. 查找系统中加载的模块: lsmod ; 卸载模块命令 : rmmod ; 装载命令: insmod/modprobe(modprobe 会自动分析模块间的依赖关系);
2. 模块加载函数:利用__init 标识
static int __init ***_init(void)
{
…………….
}
module_init(***_init);
返回0表示加载成功, 失败则返回一些错误代码,参考<linux/errno.h>
在加载函数中一般用于初始化硬件,申请资源…..
3. 模块卸载函数:利用__exit标识
static void __exit ***_exit(void)
{
………….
}
module_exit(***_exit);
注: 在卸载模块的函数中,一般需要完成以下的几件事情:
# 若模块加载函数中注册了***,则在模块卸载函数中需注销;
# 若在模块加载函数中动态申请了内存,则在此亦需要释放;
# 若在模块加载中申请了一些硬件资源(如:IRQ, DMA channel, I/O ,memory),则在此需释放;
4. 模块参数 : module_param(参数名, 参数类型, 参数读/写权限)
注: 可以利用上述的方法在加载模块时传递需要的参数。
5.
导出符号
: 记录了该符号以及该符号所在的内存地址。