平台设备;为什么'分配'和'添加'?

时间:2014-01-09 04:25:27

标签: c linux kernel linux-device-driver device-driver

我正在寻找sound / soc / imx中的机器驱动程序。 在初始化函数中,按此顺序;

platform_driver_register(...);
...
platform_device_alloc(..., ...);
platform_set_drvdata(..., ...);
platform_device_add(...);
...

对于平台设备,为什么需要“分配”然后“添加”? platform_device_alloc()表示“创建平台设备”;并且platform_device_add()表示“将平台设备添加到设备层次结构”,所以我很想知道,为什么你需要两者?

1 个答案:

答案 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和其他相关函数中组合,这些函数执行内存分配以及设备注册。