为什么cdev_add不执行类似driver / base / core.c的device_add / kobject_add的操作

时间:2018-06-14 07:24:49

标签: linux-device-driver embedded-linux

字符设备注册以何种方式与其他设备注册不同?

这是一个平台驱动程序注册设备,带调节器内核,后者带有驱动核心: /drivers/regulator/tps65086-regulator.c--->/drivers/regulator/core.c--->驱动程序/碱/ core.c

呼叫流程:  tps65086_regulator_probe - > regulator_register ---> device_register ---> device_add ---> kobject_add

其中以下是将设备注册为字符设备的驱动程序

/drivers/scsi/3w-xxxx.c - > fs / char_dev.c ---> /drivers/base/map.c

呼叫流程:

tw_probe - > register_chrdev - > cdev_add - > kobj_map

为什么不最终转到驱动核心并调用device_add ??

1 个答案:

答案 0 :(得分:0)

平台驱动程序和设备驱动程序之间的区别在于,平台设备直接连接到CPU,而设备驱动程序则处理连接到系统总线的设备。因此那里的注册机制也不同。

例如,平台设备将向平台总线注册,该平台总线是伪总线。实际的设备将在该设备所连接的相应总线上进行注册。