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_driveruart_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 :迭代总线的驱动程序列表以查找支持该设备的驱动程序,然后将此设备添加到总线的设备列表中