Login or Register to Ask a Question and Join Our Community

Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

struct_bus_type(9) [centos man page]

BUS_TYPE(9) Device drivers infrastructure STRUCT BUS_TYPE(9) NAME
struct_bus_type - The bus type of the device SYNOPSIS
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; 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; }; MEMBERS
name The name of the bus. dev_name Used for subsystems to enumerate devices like ("foou", 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. 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 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. 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. DESCRIPTION
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. COPYRIGHT
Kernel Hackers Manual 3.10 June 2014 STRUCT BUS_TYPE(9)

Check Out this Related Man Page

DEVICE(9) Device drivers infrastructure STRUCT DEVICE(9) NAME
struct_device - The basic device structure SYNOPSIS
struct device { struct device * parent; struct device_private * p; struct kobject kobj; const char * init_name; const struct device_type * type; struct mutex mutex; struct bus_type * bus; struct device_driver * driver; void * platform_data; struct dev_pm_info power; struct dev_pm_domain * pm_domain; #ifdef CONFIG_PINCTRL struct dev_pin_info * pins; #endif #ifdef CONFIG_NUMA int numa_node; #endif u64 * dma_mask; u64 coherent_dma_mask; struct device_dma_parameters * dma_parms; struct list_head dma_pools; struct dma_coherent_mem * dma_mem; #ifdef CONFIG_CMA #endif struct dev_archdata archdata; struct device_node * of_node; struct acpi_dev_node acpi_node; dev_t devt; u32 id; spinlock_t devres_lock; struct list_head devres_head; struct klist_node knode_class; struct class * class; const struct attribute_group ** groups; void (* release) (struct device *dev); bool offline_disabled:1; bool offline:1; }; MEMBERS
parent The device's "parent" device, the device to which it is attached. In most cases, a parent device is some sort of bus or host controller. If parent is NULL, the device, is a top-level device, which is not usually what you want. p Holds the private data of the driver core portions of the device. See the comment of the struct device_private for detail. kobj A top-level, abstract class from which other classes are derived. init_name Initial name of the device. type The type of device. This identifies the device type and carries type-specific information. mutex Mutex to synchronize calls to its driver. bus Type of bus device is on. driver Which driver has allocated this platform_data Platform data specific to the device. power For device power management. See Documentation/power/devices.txt for details. pm_domain Provide callbacks that are executed during system suspend, hibernation, system resume and during runtime PM transitions along with subsystem-level and driver-level callbacks. pins For device pin management. See Documentation/pinctrl.txt for details. numa_node NUMA node this device is close to. dma_mask Dma mask (if dma'ble device). coherent_dma_mask Like dma_mask, but for alloc_coherent mapping as not all hardware supports 64-bit addresses for consistent allocations such descriptors. dma_parms A low level driver may set these to teach IOMMU code about segment limitations. dma_pools Dma pools (if dma'ble device). dma_mem Internal for coherent mem override. archdata For arch-specific additions. of_node Associated device tree node. acpi_node Associated ACPI device node. devt For creating the sysfs "dev". id device instance devres_lock Spinlock to protect the resource of the device. devres_head The resources list of the device. knode_class The node used to add the device to the class list. class The class of the device. groups Optional attribute groups. release Callback to free the device after all references have gone away. This should be set by the allocator of the device (i.e. the bus driver that discovered the device). offline_disabled If set, the device is permanently online. offline Set after successful invocation of bus type's .offline. EXAMPLE
For devices on custom boards, as typical of embedded and SOC based hardware, Linux often uses platform_data to point to board-specific structures describing devices and how they are wired. That can include what ports are available, chip variants, which GPIO pins act in what additional roles, and so on. This shrinks the "Board Support Packages" (BSPs) and minimizes board-specific #ifdefs in drivers. DESCRIPTION
At the lowest level, every device in a Linux system is represented by an instance of struct device. The device structure contains the information that the device model core needs to model the system. Most subsystems, however, track additional information about the devices they host. As a result, it is rare for devices to be represented by bare device structures; instead, that structure, like kobject structures, is usually embedded within a higher-level representation of the device. COPYRIGHT
Kernel Hackers Manual 3.10 June 2014 STRUCT DEVICE(9)
Man Page

Featured Tech Videos