Linux内核驱动早期经典字符设备模型介绍

本文介绍了Linux内核驱动中早期的字符设备模型,与杂项设备模型的主要区别在于它没有核心结构,且不自动在/dev下创建设备节点。设备号包括主设备号和次设备号,通过register_chrdev进行注册,其中主设备号0-255,次设备号0-255。注册和注销设备驱动需使用特定函数,并提供设备名和文件操作方法结构指针。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

早期经典字符设备模型和杂项设备字符模型的最大区别是没有一个核心的结构。并且安装设备驱动后不会像杂项设备那样自动的在dev目录下为app创建设备节点。需要手动的使用mknod创建设备号。


设备号:

主设备号:0-255(10是给杂项设备使用的)

次设备号:0-255 ,当传递255的时候表示的是自动分配次设备号。

调用一个 register_chrdev 注册后, 256 个次设备号就都被占用完了。也就是说一个主设备号只能使用register_chrdev 函数注册一次。


注册/注销函数:

注册函数: int register_chrdev(unsigned int major, /* 主设备号 */
const char *name, /* 设备名,不需要和/dev 下对应节点名相同 */
const struct file_operations *fops) /* 文件操作方法结构指针 */
头文件: #include <linux/fs.h>
功能: 注册一个标准字符设备
参数: major:主设备号, 0~255(10 除外)。 当 0 时候表示由内核自动分配一个可用的主设备号
name:设备名,不需要和/dev 下对应节点名相同

fops:文件操作方法结构的指针

返回值:

当major == 0: 成功:返回分配的主设备号     失败:返回负数

当major > 0:   成功:返回0                             失败:返回负数

注销函数: void unregister_chrdev(unsigned int major, const char *name)
头文件: #include <linux/fs.h>
功能: 注销一个已经存在标准

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值