本文主要是介绍Linux内核驱动早期经典字符设备模型介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
早期经典字符设备模型和杂项设备字符模型的最大区别是没有一个核心的结构。并且安装设备驱动后不会像杂项设备那样自动的在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 失败:返回负数
注销函数&#x
这篇关于Linux内核驱动早期经典字符设备模型介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!