我想知道如何为平台设备驱动程序分配主要编号。 例如,在driver code中,我没有看到任何函数调用,如
alloc_chrdev_region()
或
register_chrdev_region()
有人,请让我明白这一点。 谢谢。
答案 0 :(得分:1)
内核创建了大量连接到各种虚拟总线的设备(可能代表也可能不代表物理虚拟总线)。只能从用户空间直接访问其中一些设备。并且只有其中一部分依赖于“设备节点”接口才能这样做(现代内核中存在大量其他选项)。如果驱动程序不使用此特定接口,则无需分配设备节点编号。
内核设备位于特定总线的附属位置(使用内部设备名称和总线ID)。例如,mcspi
驱动程序在“平台总线”上注册为“设备”,在“spi总线”上注册为“总线主控”。看到总线主机已注册后,spi子系统将在新连接的总线上触发“总线重新扫描”。
spidev
驱动程序的操作方式是始终“匹配”每个spi总线上存在的虚设备,因此它将针对每个“总线主控”注册进行实例化。它将创建用户空间设备节点,该节点可用于与其“总线主控”(spi总线控制器,在此特定情况下为mcspi
)直接通信。
答案 1 :(得分:0)