设备,驱动,总线的结构
来源:互联网 发布:淘宝运营助理面试技巧 编辑:程序博客网 时间:2024/05/20 21:23
struct bus_type{
const char *name;
const char *dev_name;
struct device *dev_root;
struct device_attribute *dev_attrs;/*Use dev_groups instead*/
const struct attribute_group **bus_groups;
const struct attribute_group **dev_groups;
const struct attribute_group **drv_groups;s
int (*match)(struct device *dev,struct device_driver *drv);
int (*uevent)(struct device *dev,struct kobj_uevent_env *env);
int (*remove)(struct device *dev);
void (*shutdown)(struct device *dev);
int(*online) (struct device *dev);
int(*offline)(struct device *dev);
const struct dev_pm_ops *pm;
struct iommu_ops *iomm_ops;
struct subsys_private *p;
struct lock_class_key lock_key;
};
struct device_type{
const char *name;
struct bus_type*bus;
struct module *owner;
const char *mod_name;
bool suppress_bind_attrs;
const struct of_device_id*of_match_table;
const struct acpi_device_id*acpi_match_table;
int (*probe) (struct device *dev);
int (*remove)(struct device *dev);
void (*shutdown)(struct device *dev);
int (*suspend)(struct device *dev,pm_message_t state);
int (*resume)(struct device *dev);
const struct attribute_group **groups;
const struct dev_pm_ops *pm;
struct driver_private *p;
};
struct device{
struct device *parent;
struct device_private*p;
struct kobject kobj;
const char *init name;
const struct device_type *type;
struct mutex mutex;
struct bus_type*bus;/*type of bus device is on*/
struct device_driver *driver;
void *platform_data;
struct dev_pm infopower;
struct dev_pm_domain *pm_domain;
#ifdef CONFIG_PINCTRL
struct dev_pin_info *pins;s
#endif
#ifdef CONFIG_NUMA
int numa_node;
#endif
u64 *dma_mask;
u64 coherent_dma_mask;
struct device_dma_parameters *dma_parms;s
struct list_head dma_pools;
struct dma_coherent_mem*dma_mem;
#ifdef
struct cma *cma_area;
#endif
/*arch specific addition*/
struct dev_archdataarchdata;
struct device_node *of_node;
struct device_node *of_node;
struct acpi_dev_node *acpi_node;s
dev_t devt;
u32 id;
spinlock_t devers_lock;
struct list_head devers_head;
struct klist_nodeknode_class;
struct class *class;
const struct attribute_group **groups;
void (*release)(struct device *dev);
struct iommu_group *iommu_group;
boo offline_disabled:1
boo offline:1;
};
device_drivers和device分别表示 驱动和设备,而这两者都必须依赖于一种总线。因此都包含struct bus_type指针。
设备和驱动在内核当中是分开注册的,bus_type的match()成员函数将两者捆绑在一起。配对成功,xxx_driver的probe()
就会被执行。总线,驱动和设备最终都可以认为是kobject的派生类。一个kobject对应sysfs中的一个驱动。
今天更显到这里,爱你,YZ.
const char *name;
const char *dev_name;
struct device *dev_root;
struct device_attribute *dev_attrs;/*Use dev_groups instead*/
const struct attribute_group **bus_groups;
const struct attribute_group **dev_groups;
const struct attribute_group **drv_groups;s
int (*match)(struct device *dev,struct device_driver *drv);
int (*uevent)(struct device *dev,struct kobj_uevent_env *env);
int (*remove)(struct device *dev);
void (*shutdown)(struct device *dev);
int(*online) (struct device *dev);
int(*offline)(struct device *dev);
const struct dev_pm_ops *pm;
struct iommu_ops *iomm_ops;
struct subsys_private *p;
struct lock_class_key lock_key;
};
struct device_type{
const char *name;
struct bus_type*bus;
struct module *owner;
const char *mod_name;
bool suppress_bind_attrs;
const struct of_device_id*of_match_table;
const struct acpi_device_id*acpi_match_table;
int (*probe) (struct device *dev);
int (*remove)(struct device *dev);
void (*shutdown)(struct device *dev);
int (*suspend)(struct device *dev,pm_message_t state);
int (*resume)(struct device *dev);
const struct attribute_group **groups;
const struct dev_pm_ops *pm;
struct driver_private *p;
};
struct device{
struct device *parent;
struct device_private*p;
struct kobject kobj;
const char *init name;
const struct device_type *type;
struct mutex mutex;
struct bus_type*bus;/*type of bus device is on*/
struct device_driver *driver;
void *platform_data;
struct dev_pm infopower;
struct dev_pm_domain *pm_domain;
#ifdef CONFIG_PINCTRL
struct dev_pin_info *pins;s
#endif
#ifdef CONFIG_NUMA
int numa_node;
#endif
u64 *dma_mask;
u64 coherent_dma_mask;
struct device_dma_parameters *dma_parms;s
struct list_head dma_pools;
struct dma_coherent_mem*dma_mem;
#ifdef
struct cma *cma_area;
#endif
/*arch specific addition*/
struct dev_archdataarchdata;
struct device_node *of_node;
struct device_node *of_node;
struct acpi_dev_node *acpi_node;s
dev_t devt;
u32 id;
spinlock_t devers_lock;
struct list_head devers_head;
struct klist_nodeknode_class;
struct class *class;
const struct attribute_group **groups;
void (*release)(struct device *dev);
struct iommu_group *iommu_group;
boo offline_disabled:1
boo offline:1;
};
device_drivers和device分别表示 驱动和设备,而这两者都必须依赖于一种总线。因此都包含struct bus_type指针。
设备和驱动在内核当中是分开注册的,bus_type的match()成员函数将两者捆绑在一起。配对成功,xxx_driver的probe()
就会被执行。总线,驱动和设备最终都可以认为是kobject的派生类。一个kobject对应sysfs中的一个驱动。
今天更显到这里,爱你,YZ.
0 0
- 设备,驱动,总线的结构
- platform总线、设备、驱动相关的结构体
- 驱动框架有关的结构体——设备、驱动、总线、类,属性结构体
- 设备、驱动、总线的关系
- 总线,设备,驱动的设备模型
- 总线,设备,设备驱动
- linux设备驱动的总线,设备和驱动的关系
- 关于总线设备驱动的一些想法
- 总线、设备和驱动的关系
- 平台总线、设备、驱动的学习
- 总线、设备和驱动的关系
- Linux总线设备驱动框架的理解
- platform总线--驱动发现设备的过程
- Linux的总线、设备、驱动模型
- MTK6517平台0309camera模块驱动、设备、总线结构笔记
- 总线,设备,和驱动
- 总线设备驱动模型
- 总线、设备、驱动、类
- uml的总结
- POJ 3252 Round Numbers(数位dp)
- Java运行时异常
- 精度--洛谷 P1378 油滴扩展
- 360浏览器调用selenium
- 设备,驱动,总线的结构
- 题目1073:杨辉三角形
- LeetCode: Max Consecutive Ones
- C++中的初始化和引用
- 容斥原理
- 在UnrealEngine4中使用Google Protobuf
- 【win32】鼠标响应事件
- qsort函数、sort函数 (精心整理篇)(转载)
- 郑重之场合行事易紧张,怎么办?