device_register和driver_register之间的区别
我正在写一个UART驱动程序。 我在第14章.Linux设备模型中遇到了两个函数。
int device_register(struct device *dev); int driver_register(struct device_driver *drv);
由于UART是一个char驱动程序,我使用( alloc_chrdev_region)
动态创建了主要数字,并使用cdevadd()
将设备添加到内核。
我在omap-serial.c中遇到了uart_register_driver()
和platform_driver_register()
。
我可以使用platform_driver_register()
映射driver_register
,但是uart_register_driver
与tty相关函数映射。因为我是初学者,我不想使用tty相关函数。
uart_register_driver
与uart_register_driver
device_driver()
吗?
请解释。
@Dino,根据我的理解,device_register:只是注册一个新设备到系统和链接,你可以通过https://www.kernel.org/doc/htmldocs/device-drivers/API-device-register。 HTML 。 driver_register:注册平台驱动程序,此驱动程序支持基于平台驱动程序结构中指定的“.name”和“.of_match_table”的设备。 结构platform_driver中的“.name”和platform_device中的名称应匹配,然后只有设备绑定到驱动程序并调用探测函数。 请浏览http://lwn.net/Articles/448499/链接
driver_register
:将此驱动程序添加到总线的驱动程序列表中 。
device_register
:迭代总线的驱动程序列表以查找支持该设备的驱动程序,然后将此设备添加到总线的设备列表中 。