Linux内核模块和Linux fs 与 sysfs 一

  • Post author:
  • Post category:linux


注: 参考整理自《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.

导出符号

: 记录了该符号以及该符号所在的内存地址。



版权声明:本文为tianruxishui原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。