Linux驱动杂项设备驱动

Linux杂项设备驱动

  • Fang XS.
  • 1452512966@qq.com
  • 如果有错误,希望被指出

前言

  • Linux驱动中,不容易分类的驱动,可以使用杂项设备驱动。
  • 主设备号都为10,次设备号可自动分配,可节省内核资源。
    • 主设备号通常表示一类设备。
    • 次设备号通常表示一类设备中的某一个设备。

MISC

  1. 头文件
#include <linux/init.h>
#include <linux/module.h>
#include <linux/miscdevice.h>		// 提供miscdevice结构体
#include <linux/fs.h>				// 提供文件操作集
  1. miscdevice 结构体和file_operations结构体
struct file_operations misc_fops={		// 文件操作集
    .owner = THIS_MODULE				// 初始化.owner成员。省略了.open .read .write .release成员
};
struct miscdevice miscdev_test = {
	.minor		= MISC_DYNAMIC_MINOR,	// 自动分配次设备号
	.name		= "miscdev_test",		// /dev/下生成的设备节点名
	.fops		= &misc_fops			// 关联fops
};
  1. 初始化函数和卸载函数
static int miscdev_init(void){ 
	int ret;
	ret = misc_register(&miscdev_test);		
	if(ret<0){
		printk("misc_register err..\n");	// 注册失败
		return -1;
	}
	printk("misc_register succeed..\n");	// 注册成功
	return 0;
}
static void miscdev_exit(void) { 
	misc_deregister(&miscdev_test);			// 注销设备		
	printk("miscdev_exit..\n");
}
  1. 模块入口和出口
module_init(miscdev_init);			
module_exit(miscdev_exit);
MODULE_LICENSE("GPL");

函数原型

函数int misc_register(struct miscdevice * misc)
参数要注册的miscdevice结构体
返回值成功返回 0,失败返回负数。
函数int misc_deregister(struct miscdevice * misc)
参数要注销的miscdevice结构体
返回值成功返回 0,失败返回负数。

查看

  • 主设备号
    cat /proc/devices
  • 杂项设备次设备号
    cat /proc/misc
  • 主设备号和次设备号等
    ls /dev/miscdev_test -l
    这里的miscdev_test就是miscdevice结构体.name成员
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值