device_register 和 driver_register 的区别

ddp*_*dpd 2 c serial-port linux-device-driver embedded-linux uart

我正在写一个UART驱动程序。我在第 14.Linux 设备模型一章中遇到了这两个函数。

int device_register(struct device *dev);
int driver_register(struct device_driver *drv);
Run Code Online (Sandbox Code Playgroud)

由于 UART 是一个字符驱动程序,我使用 ( 动态创建了主alloc_chrdev_region)设备号,并使用cdevadd().

我在 omap-serial.c 中遇到了uart_register_driver()和。platform_driver_register()

我可以映射driver_register与 ,platform_driver_register()uart_register_driver映射与 tty 相关的函数。因为我是初学者,所以我不想使用 tty 相关的函数。

uart_register_driver与?有关device_driver()

请解释。

小智 5

driver_register:将此驱动程序添加到总线驱动程序列表中。

device_register:迭代总线的驱动程序列表以查找支持该设备的驱动程序,然后将该设备添加到总线的设备列表中。