platform_set_drvdata和platform_get_drvdata
来源:互联网 发布:恶搞锁屏软件 编辑:程序博客网 时间:2024/06/07 00:38
1、platform_set_drvdatakernel\linux-3.10.y\include\linux\platform_device.h:static inline void platform_set_drvdata(struct platform_device *pdev, void *data){dev_set_drvdata(&pdev->dev, data);}kernel\linux-3.10.y\drivers\base\dd.c: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;}2、platform_get_drvdatastatic inline void *platform_get_drvdata(const struct platform_device *pdev){return dev_get_drvdata(&pdev->dev);}void *dev_get_drvdata(const struct device *dev){if (dev && dev->p)return dev->p->driver_data;return NULL;}kernel\linux-3.10.y\include\linux\device.h:struct device {struct device *parent;struct device_private *p;struct kobject kobj;const char *init_name; /* initial name of the device */const struct device_type *type;struct mutex mutex; /* mutex to synchronize calls to * its driver. */struct bus_type *bus; /* type of bus device is on */struct device_driver *driver; /* which driver has allocated this device */void *platform_data; /* Platform specific data, device core doesn't touch it */struct dev_pm_info power;struct dev_pm_domain *pm_domain;#ifdef CONFIG_PINCTRLstruct dev_pin_info *pins;#endif#ifdef CONFIG_NUMAint numa_node; /* NUMA node this device is close to */#endifu64 *dma_mask; /* dma mask (if dma'able device) */u64 coherent_dma_mask;/* Like dma_mask, but for alloc_coherent mappings as not all hardware supports 64 bit addresses for consistent allocations such descriptors. */struct device_dma_parameters *dma_parms;struct list_head dma_pools; /* dma pools (if dma'ble) */struct dma_coherent_mem *dma_mem; /* internal for coherent mem override */#ifdef CONFIG_DMA_CMAstruct cma *cma_area; /* contiguous memory area for dmaallocations */#endif/* arch specific additions */struct dev_archdata archdata;struct device_node *of_node; /* associated device tree node */struct acpi_dev_node acpi_node; /* associated ACPI device node */dev_t devt; /* dev_t, creates the sysfs "dev" */u32 id; /* device instance */spinlock_t devres_lock;struct list_head devres_head;struct klist_node knode_class;struct class *class;const struct attribute_group **groups; /* optional groups */void (*release)(struct device *dev);struct iommu_group *iommu_group;};kernel\linux-3.10.y\drivers\base\base.h:struct device_private {struct klist klist_children;struct klist_node knode_parent;struct klist_node knode_driver;struct klist_node knode_bus;struct list_head deferred_probe;void *driver_data;struct device *device;};
0 0
- platform_set_drvdata和platform_get_drvdata
- platform_set_drvdata 和 platform_get_drvdata
- platform_set_drvdata/platform_get_drvdata
- platform_set_drvdata() platform_get_drvdata()
- Linux点滴-platform_set_drvdata 和 platform_get_drvdata
- platform_set_drvdata()/platform_get_drvdata()/container_of()
- platform_set_drvdata
- platform_set_drvdata
- platform_set_drvdata
- platform_get_drvdata&dev_get_drv_data
- 函数 platform_set_drvdata()
- platform_set_drvdata的源码分析
- platform_set_drvdata的作用
- 驱动开发笔记——platform_set_drvdata分析
- . 和 ->
- || 和&&
- .和::
- “?”和“!”
- 去哪儿2017校园招聘笔试题——获得文件扩展名filename extension
- AndroidStudio设置package presentation
- predis
- hdu5090Game with Pearls(二分图匹配)
- 08. File & Network I/O
- platform_set_drvdata和platform_get_drvdata
- UVA 3971 Assemble -
- 常用数据类型对应字节数 32/64
- unity 脚本的执行先后顺序
- 从零开始搭建Raspberry Pi机器视觉编程环境
- Android Studio显示行数
- WinSCP 中普通用户以 root 身份登录 Linux
- c#txt文件存到string数组中报错
- C++ typedef和typename关键字