我正在寻找sound / soc / imx中的机器驱动程序。 在初始化函数中,按此顺序;
platform_driver_register(...);
...
platform_device_alloc(..., ...);
platform_set_drvdata(..., ...);
platform_device_add(...);
...
对于平台设备,为什么需要“分配”然后“添加”?
platform_device_alloc()
表示“创建平台设备”;并且platform_device_add()
表示“将平台设备添加到设备层次结构”,所以我很想知道,为什么你需要两者?
答案 0 :(得分:3)
platform_device_alloc函数仅执行platform_device结构的内存分配,并使用外部参数初始化其变量。
http://lxr.free-electrons.com/source/drivers/base/platform.c#L197
platform_device_add函数执行在设备驱动程序层次结构中注册目标设备所需的所有任务。
http://lxr.free-electrons.com/source/drivers/base/platform.c#L277
如果需要,两个函数的分离旨在允许驱动程序开发人员进行粒度级别配置。
这两个操作在platform_device_register_simple和其他相关函数中组合,这些函数执行内存分配以及设备注册。