【发布时间】:2009-10-06 09:01:37
【问题描述】:
我正在尝试了解设备驱动程序在 linux 中的工作原理。
-
我有一个设备节点如下(主编号89,设备名称i2c-0)
crw-r--r-- 1 0 0 89, 0 Sep 29 01:36 /dev/i2c-0 我有名为
i2c.ko的i2c 驱动程序,我将在启动过程中使用insmod i2c.ko。-
在驱动中,初始化时会调用如下函数:
register_chrdev(89, "i2c", &i2chtv_fops)<0 // not "i2c-0"
我的问题是:当用户调用open("/dev/i2c-0", O_RDWR) 时,内核如何知道要使用哪个驱动程序?我注意到设备名称是i2c-0,但注册的设备名称是i2c。是否因为它们使用相同的主编号,内核才能使用正确的驱动程序?
【问题讨论】:
标签: linux embedded device-driver