一.Linux内核模块基础
1.内核模块作用:节省内存的空间
2.内核模块特点:模块本身并不被编译进入内核文件;在内核运行期间动态的安装或者卸载
3.内核模块操作:
3.1安装:insmod
3.2卸载:rmmod
3.3查看:lsmod
4.新的使用组件思路:动态加载和卸载。也就是需要这个组件的时候才去加载,不需要的时候,就卸载。这边是 我们所说的内核模块机制。
二.Linux内核模块设计
总体步骤 :1.头文件:<linux/init.h>和<linux/module.h>
2.调用加载函数:module_init();
3.调用卸载函数:module_exit();
范例代码:
helloworld.c
Makefile:
三.Linux内核模块可选项
1.模块申明:
MODULE_LICENSE(“遵守的协议”):申明该模块遵守的许可协议
MODULE_AUTHOR("作者"):申明模块的作者
MODULE_DESCRIPTION("模块的功能描述"):申明模块的功能
MODULE_VERSION(""):申明模块的版本
2.模块参数:
通过module_param指定保存模块参数的变量。模块参数用于加载模块时传递参数给模块
函数: module_param(name,type,perm)
参数设置:name:变量的名字
type:变量的类型
perm:访问的权限 S_IRUGO:读权限 S_IWUSR:写权限
3.符号导出:
内核符号的导出使用宏:EXPORT_SYMBOL(符号名)