一个杂项驱动程序如何控制所有这些不同的硬件?

一个杂项驱动程序如何控制所有这些不同的硬件?

我正在学习驱动程序开发,根据我读过的书,所有相同类型的 Linux 设备都具有相同的主设备号,由相同的驱动程序控制,因此例如,如果我们有一台具有多个 UART 物理端口的计算机,所有这些设备都将具有相同的主设备号但驱动程序会将不同的次要编号解释为不同的物理端口。我的问题是,根据这个关联其他设备(主设备号 10)很多,我的电脑证实了这一点,所以我的问题是一个驱动程序如何控制所有这些不同的设备(其中许多是虚拟的)。是否存在一种重定向级别,当我打开设备时,内核已经注册了该主设备号,并且根据次设备号,内核注册的驱动程序调用负责该次设备号(我编写的那个)的驱动程序,或者当我打开我注册的驱动程序的设备文件将是直接调用的。

答案1

是的,存在一定程度的间接性。司机misc注册为相应专业的所有设备节点的驱动程序;它维护注册驱动程序的列表。打开设备时,第一个处理程序是misc_open,它在列表中查找匹配的驱动程序并将控制权传递给它。

相关内容