Linux Kernel设备驱动模型之 struct bus_type

设备模型之总线类型描述:
 

/**  * 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.  * @dev_attrs: Default attributes of the devices on the bus.  * @bus_groups: Default attributes of the bus.  * @dev_groups: Default attributes of the devices on the bus.  * @drv_groups: 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 positive value if the  *  given device can be handled by the given driver and zero  *  otherwise. It may also return error code if determining that  *  the driver supports the device is not possible. In case of  *  -EPROBE_DEFER it will queue the device for deferred probing.  * @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.  *  * @online: Called to put the device back online (after offlining it).  * @offline: Called to put the device offline for hot-removal. May fail.  *  * @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.  * @lock_key: Lock class key for use by the lock validator  *  * 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 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; };

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值