'\" t .\" Title: struct bus_type .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: May 2018 .\" Manual: Device drivers infrastructure .\" Source: Kernel Hackers Manual 3.16.56 .\" Language: English .\" .TH "STRUCT BUS_TYPE" "9" "May 2018" "Kernel Hackers Manual 3\&.16\&" "Device drivers infrastructure" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" struct_bus_type \- The bus type of the device .SH "SYNOPSIS" .sp .nf struct bus_type { const char * name; const char * dev_name; struct device * dev_root; struct device_attribute * dev_attrs; 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; struct iommu_ops * iommu_ops; struct subsys_private * p; struct lock_class_key lock_key; }; .fi .SH "MEMBERS" .PP name .RS 4 The name of the bus\&. .RE .PP dev_name .RS 4 Used for subsystems to enumerate devices like (\(lqfoo\fBu\fR\(rq, dev\->id)\&. .RE .PP dev_root .RS 4 Default device to use as the parent\&. .RE .PP dev_attrs .RS 4 Default attributes of the devices on the bus\&. .RE .PP bus_groups .RS 4 Default attributes of the bus\&. .RE .PP dev_groups .RS 4 Default attributes of the devices on the bus\&. .RE .PP drv_groups .RS 4 Default attributes of the device drivers on the bus\&. .RE .PP match .RS 4 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\&. .RE .PP uevent .RS 4 Called when a device is added, removed, or a few other things that generate uevents to add the environment variables\&. .RE .PP probe .RS 4 Called when a new device or driver add to this bus, and callback the specific driver\*(Aqs probe to initial the matched device\&. .RE .PP remove .RS 4 Called when a device removed from this bus\&. .RE .PP shutdown .RS 4 Called at shut\-down time to quiesce the device\&. .RE .PP online .RS 4 Called to put the device back online (after offlining it)\&. .RE .PP offline .RS 4 Called to put the device offline for hot\-removal\&. May fail\&. .RE .PP suspend .RS 4 Called when a device on this bus wants to go to sleep mode\&. .RE .PP resume .RS 4 Called to bring a device on this bus out of sleep mode\&. .RE .PP pm .RS 4 Power management operations of this bus, callback the specific device driver\*(Aqs pm\-ops\&. .RE .PP iommu_ops .RS 4 IOMMU specific operations for this bus, used to attach IOMMU driver implementations to a bus and allow the driver to do bus\-specific setup .RE .PP p .RS 4 The private data of the driver core, only the driver core can touch this\&. .RE .PP lock_key .RS 4 Lock class key for use by the lock validator .RE .SH "DESCRIPTION" .PP 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, \(lqplatform\(rq 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\*(Aq methods, PM operations, and the driver core\*(Aqs private data\&. .SH "COPYRIGHT" .br