Linux设备驱动-模块

【1】模块文件
在文件系统中可以被直接插入到内核的文件
在这里插入图片描述

【2】模块三要素
模块加载函数(必须)
当在文件系统中使用insmod或者该模块在内核被执行的时候,自动执行该函数
函数方式:
1)缺省方式

 int init_module(void){
	     //资源的申请,初始化代码
	     return 0;
	   }
2)用户自定义 
  int test_init(void){
	      //资源的申请,初始化代码
			return 0;
	   }
	 
       module_init(test_init);	  

模块卸载函数(必须)
当模块从文件系统中移除或者模块在内核失效的时候,自动执行该函数
函数方式:
1)缺省方式
void cleanup_module(void){
//资源的释放,执行的是与init_module相反的工作
}
2)用户自定义
void test_exit(void){
//资源的释放,执行的是与test_init相反的工作
}
module_exit(test_exit);
模块许可证声明(必须)
MODULE_LICENSE(“GPL”);

【3】调试驱动
查看打印信息: dmesg 显示内核中所有的打印信息
sudo dmesg -c 先显示打印信息,后清空缓冲区
sudo dmesg -C 不显示,直接清空缓冲区
cat /proc/modules 显示当前系统中的模块信息
lsmod 显示当前系统中的模块信息
modinfo + xxx.ko 查看模块信息

【4】模块参数
传参对象:变量(int,bool,ulong,charp),指针,数组(字符,整型)
module_param(变量名, 变量的类型, 权限);
MODULE_PARM_DESC(变量名,“声明变量的功能”);

module_param_array(数组名,数组中元素的类型,&数组中元素的个数,权限);

module_param_string(参数名, 数组名, 组数的大小, 权限);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值