21,597
社区成员
发帖
与我相关
我的任务
分享
static struct xxx_device_data xxx_dev_data = {
.m = {
.x = 17,
},
};
static struct platform_device xxx_dev = {
.name = "xxx-dev-name",
.id = -1,
.dev = {
.platform_data = &xxx_dev_data,
},
};
void board_xxx_init(void)
{
struct xxx_device_data *pdata;
...
pdata = &xxx_dev.dev.platform_data;
pr_info("%s(before): @%p, x = %d\n", __func__, pdata, pdata->x); // 输出正常,x为17
platform_register_device(&xxx_dev.dev.platform_data);
pr_info("%s(after): x = %d\n", __func__, pdata->x); // 输出正常,x为17
...
}
int platform_device_register(struct platform_device *pdev)
{
if (!strcmp(pdev->name, "xxx-dev-name")) {
struct xxx_device_data *pdata = pdev->dev.platform_data;
pr_info("%s: %s, @%p, x = %d\n", __func__, pdev->name, pdata, pdata->x); // 输出除x为0外,其他正常
}
...
}
board_xxx_init(before): @c0bf6188, x = 17
board_xxx_init(after): x = 17
platform_device_register: xxx-dev-name, @c0bf6188, x = 0