zoukankan      html  css  js  c++  java
  • linux 设备模型

    Linux 设备模型中有最重要的四个基本概念 : device   bus   class 

    Linux 认为总线是 CPU和其他设备的通信的通道。基于设备模型,linux 认为所有的设备都需要和总线连接.

    /**
     * struct bus_type - The bus type of the device
     *
     * @name:    The name of the bus.
     * @dev_name:    Used for subsystems to enumerate devices like ("foo%u", dev->id).
     * @dev_root:    Default device to use as the parent.
     * @bus_attrs:    Default attributes of the bus.
     * @dev_attrs:    Default attributes of the devices on the bus.
     * @drv_attrs:    Default attributes of the device drivers on the bus.
     * @match:    Called, perhaps multiple times, whenever a new device or driver
     *        is added for this bus. It should return a nonzero value if the
     *        given device can be handled by the given driver.
     * @uevent:    Called when a device is added, removed, or a few other things
     *        that generate uevents to add the environment variables.
     * @probe:    Called when a new device or driver add to this bus, and callback
     *        the specific driver's probe to initial the matched device.
     * @remove:    Called when a device removed from this bus.
     * @shutdown:    Called at shut-down time to quiesce the device.
     * @suspend:    Called when a device on this bus wants to go to sleep mode.
     * @resume:    Called to bring a device on this bus out of sleep mode.
     * @pm:        Power management operations of this bus, callback the specific
     *        device driver's pm-ops.
     * @iommu_ops:  IOMMU specific operations for this bus, used to attach IOMMU
     *              driver implementations to a bus and allow the driver to do
     *              bus-specific setup
     * @p:        The private data of the driver core, only the driver core can
     *        touch this.
     *
     * A bus is a channel between the processor and one or more devices. For the
     * purposes of the device model, all devices are connected via a bus, even if
     * it is an internal, virtual, "platform" bus. Buses can plug into each other.
     * A USB controller is usually a PCI device, for example. The device model
     * represents the actual connections between buses and the devices they control.
     * A bus is represented by the bus_type structure. It contains the name, the
     * default attributes, the bus' methods, PM operations, and the driver core's
     * private data.
     */
    struct bus_type {
        const char        *name;
        const char        *dev_name;
        struct device        *dev_root;
        struct bus_attribute    *bus_attrs;
        struct device_attribute    *dev_attrs;
        struct driver_attribute    *drv_attrs;
    
        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 (*suspend)(struct device *dev, pm_message_t state);
        int (*resume)(struct device *dev);
    
        const struct dev_pm_ops *pm;
    
        struct iommu_ops *iommu_ops;
    
        struct subsys_private *p;
        struct lock_class_key lock_key;
    };
  • 相关阅读:
    Atitit  基于meta的orm,提升加速数据库相关应用的开发
    Atitit机器学习原理与概论book attilax总结
    Atitti 文本分类  以及 垃圾邮件 判断原理 以及贝叶斯算法的应用解决方案
    Atitit 贝叶斯算法的原理以及垃圾邮件分类的原理
    Atiti  qq空间破解(3)------------gui图形化通用cli执行器atiuse
    Atitit dsl对于数组的处理以及main函数的参数赋值
    Atitit main函数的ast分析  数组参数调用的ast astview解析
    Atiti 重定向标准输出到字符串转接口adapter stream流体系 以及 重定向到字符串
    Atititcmd cli环境变量的调用设置与使用
    如何有效使用Project(2)——进度计划的执行与监控
  • 原文地址:https://www.cnblogs.com/guoyu1024/p/10467575.html
Copyright © 2011-2022 走看看