欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

字符设备驱动简化框架和misc杂项设备

程序员文章站 2022-07-14 10:01:34
...

一、字符设备驱动简化框架

1.分配设备号
2.分配cdev结构体
3.初始化cdev结构体
4.添加cdev到内核

int register_chrdev(unsigned int major, const char *name,const struct file_operations *fops)
功能:注册字符设备
参数:
    @major      主设备号
    @name       名字
    @fops       操作方法集结构体指针
返回值:如果主设备号等于0,动态分配设备号,成功返回主设备号;
        如果主设备号大于0,注册设备号,成功返回0;
        失败返回负数错误码
        
void unregister_chrdev(unsigned int major, const char *name)
功能:注销字符设备

二、misc杂项设备

头文件: <linux/miscdevice.h>

linux系统中有些字符设备不能进程更加明确的划分,就将这些设备统一归类到杂项设备中,所有这些设备都统一采用主设备号为10,次设备动态分配的方式注册到内核。
杂项设备内部就是封装了字符设备的一系列数据结构和操作接口,其本质还是字符设备类型

misc杂项设备结构体:

struct miscdevice  {
	int minor;		//次设备号,可以自己指定注册;MISC_DYNAMIC_MINOR 动态分配
	const char *name;	//名字,misc杂项设备注册的时候,创建设备文件使用
	const struct file_operations *fops;	//操作方法集
	};

杂项设备注册函数:

int misc_register(struct miscdevice * misc);
参数:
	@misc      misc杂项设备结构体指针
	返回值:成功返回0,失败返回负数错误码

杂项设备注销函数:

int misc_deregister(struct miscdevice *misc);
参数:
	@misc      misc杂项设备结构体指针
	返回值:成功返回0,失败返回负数错误码

unsigned iminor(const struct inode *inode)
功能:从inode结构体指针中获取次设备号

字符设备驱动简化框架和misc杂项设备

相关标签: Linux驱动