dev_get_platdata和dev_get_drvdata

来源:互联网 发布:mac 下载土豆视频 编辑:程序博客网 时间:2024/06/11 13:34
dev_get_platdata和dev_get_drvdata获取的对象是不同的。dev_get_platdata获取的是device结构体成员变量的void * platform_data。dev_get_drvdata获取的是device结构体struct device_private *成员变量P的成员变量void * driver_data。另外有与dev_get_drvdata相对应的set函数dev_set_drvdata,但是没有与dev_get_platdata相对应的set函数,只能直接给该platform_data赋值。两个函数的定义如下:static inline void *dev_get_platdata(const struct device *dev){return dev->platform_data;}int dev_set_drvdata(struct device *dev, void *data){int error;if (!dev->p) {error = device_private_init(dev);if (error)return error;}dev->p->driver_data = data;return 0;}void *dev_get_drvdata(const struct device *dev){if (dev && dev->p)return dev->p->driver_data;return NULL;}static inline void *platform_get_drvdata(const struct platform_device *pdev){return dev_get_drvdata(&pdev->dev);}static inline void platform_set_drvdata(struct platform_device *pdev,void *data){dev_set_drvdata(&pdev->dev, data);}