IMX6ULL驱动学习--MISC驱动

MISC驱动

MISC简介

MISC驱动,又称杂项驱动。通常嵌套在platform总线驱动中。所有的MISC设备驱动的主设备号都是10,从设备号不同,解决了设备号紧张的情况

程序结构

  • 注册miscdevice设备

注册miscdevice设备

  • 定义miscdevice设备
    向内核注册miscdevice设备时,miscdevice是一个结构体,定义在include/linux/miscdevice.h中,如下:
struct miscdevice  {
	int minor;
	const char *name;
	const struct file_operations *fops;
	struct list_head list;
	struct device *parent;
	struct device *this_device;
	const struct attribute_group **groups;
	const char *nodename;
	umode_t mode;
};

我们主要设置name,minor,fops属性,minorinclude/linux/miscdevice.h有定义,我们可以选择已有定义,也可以自定义。name是设备名字,注册成功后会在/dev目录下生成相应设备文件,fops是操作函数集合,由用户提供。

  • 注册miscdevice设备
    注册miscdevice设备调用函数如下:
int misc_register(struct miscdevice * misc)
@misc	:	要注册的设备
@return	:	负数 失败,0 成功。

此函数作用相当于如下函数集合:

alloc_chrdev_region(); 	/* 申请设备号 */
cdev_init();			/* 初始化 cdev */
cdev_add(); 			/* 添加 cdev */
class_create(); 		/* 创建类 */
device_create(); 		/* 创建设备 */
  • 注销miscdevice设备
    注销函数如下:
int misc_deregistermisc_deregister(struct miscdevice *misc);
@misc	:	要注销的设备
@return	:	负数 失败,0 成功。

此函数作用相当于如下函数集合:

cdev_del();					 /* 删除 cdev */
unregister_chrdev_region();	 /* 注销设备号 */
device_destroy();			 /* 删除设备 */
class_destroy(); 			 /* 删除类 */

程序测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值