这次讲的是四大基础设施里面的bus 最重要的bus_type真身如下 不需要看懂 直接跳过也行
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;
int (*match)(struct device *dev, struct device_driver *drv);
int (*uevent)(struct device *dev, struct kobj_uevent_env *env);
int (*probe)(struct device *dev);
int (*remove)(struct device *dev);
void (*shutdown)(struct device *dev);
int (*online)(struct device *dev);
int (*offline)(struct device *dev);
int (*suspend)(struct device *dev, pm_message_t state);
int (*resume)(struct device *dev);
const struct dev_pm_ops *pm;
const struct iommu_ops *iommu_ops;
struct subsys_private *p;
struct lock_class_key lock_key;
};
它在/include/linux/device.h里面 原因很好理解 设备相关的嘛
然后以此为轴心展开
它包含的结构体成员的类型的定义分布在以下几点:
1、sysfs.h
目录/include/linux 看名字应该是sysfs文件系统相关的了 有兴趣的童鞋可以看下sysfs.txt 在内核的Documentation里面
我们关心的就是在bus_type中有attribute_group结构体
2、pm.h
目录:/include/linux
结构体:pm_message_t
dev_pm_ops
3、Iommu.h
目录:/include/linux
结构体:Iommu_ops
4、base.h
目录:/driver/base
结构体:subsys_private
5、lockdep.h
目录:/include/linux
结构体:lock_class_key