我试图了解设备驱动程序在 linux 中的工作原理。
我有一个设备节点如下(主编号89,设备名称i2c-0)
crw-r--r-- 1 0 0 89, 0 Sep 29 01:36 /dev/i2c-0
我有带有名称的 i2c 驱动程序,
i2c.ko
我将insmod i2c.ko
在启动期间执行此操作。在驱动程序中,初始化期间将调用以下函数:
register_chrdev(89, "i2c", &i2chtv_fops)<0 // not "i2c-0"
我的问题是:当用户调用open("/dev/i2c-0", O_RDWR)
时,内核如何知道使用哪个驱动程序?我注意到设备名称是i2c-0
,但注册的设备名称是i2c
。是因为它们使用相同的主编号,内核可以使用正确的驱动程序吗?