内核学习之linux设备模型一——bus_type

这次讲的是四大基础设施里面的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

猜你喜欢

转载自blog.csdn.net/demonDHXQ/article/details/80277809