我对主要和次要设备号的概念有一些澄清。我理解以下概念。
- 在 Linux 世界中,硬件设备不过是称为设备文件的文件(但特殊)。
- 并且每个设备文件都与捆绑到一个
dev_t
类型中的 MAJOR 和 MINOR 编号相关联。 - 这些编号由函数分配给设备
register_chrdev_region
我的问题是这些数字到底在哪里使用。截至我检查时,它引导我得到以下答案
内核使用此编号来识别与设备关联的驱动程序
谁能帮我这个。
我对主要和次要设备号的概念有一些澄清。我理解以下概念。
dev_t
类型中的 MAJOR 和 MINOR 编号相关联。register_chrdev_region
我的问题是这些数字到底在哪里使用。截至我检查时,它引导我得到以下答案
内核使用此编号来识别与设备关联的驱动程序
谁能帮我这个。
做 als -l /dev/*
会显示一些类似的东西
...
crw-rw---T+ 1 root audio 116, 33 sept. 21 09:19 timer
...
是这个116, 33
特定设备的主要和次要设备。
Tha major 设置设备的类型,通常是与其关联的驱动程序。次要列出该类型的第一个、第二个、第三个……设备。
每个主要编号只有一个驱动程序,并且可以处理多个未成年人。
当然,现在可以动态分配这些数字。
简单来说,
主要编号告诉使用哪个驱动程序。此编号是在注册设备驱动程序时分配的。
次要编号告诉哪个设备确切使用了该设备类型。
假设硬盘可能有四个分区。每个分区将具有单独的次要编号,其中只有一个主要编号。因为所有分区都使用相同的存储驱动程序。
主设备号和次设备号告诉内核如何访问设备。
一个通用的主设备号分配给由同一设备驱动程序控制的所有设备。次要编号有助于区分使用相同设备驱动程序的确切设备类型/控制器。