*参照元 [#x6aca22d]
#backlinks

*説明 [#b979a5ab]
-パス: [[linux-4.4.1/include/linux/device.h]]

-FIXME: これは何?
--説明


**参考 [#m9412538]


*実装 [#e4b6e493]
 /**
  * struct device - The basic device structure
  * @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.
  *              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.
  * @driver_data: Private pointer for driver specific info.
  * @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.
  * @msi_list:   Hosts MSI descriptors
  * @msi_domain: The generic MSI domain this device is using.
  * @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_pfn_offset: offset of DMA memory range relatively of RAM
  * @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.
  * @cma_area:   Contiguous memory area for dma allocations
  * @archdata:   For arch-specific additions.
  * @of_node:    Associated device tree node.
  * @fwnode:     Associated device node supplied by platform firmware.
  * @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).
  * @iommu_group: IOMMU group the device belongs to.
  *
  * @offline_disabled: If set, the device is permanently online.
  * @offline:    Set after successful invocation of bus type's .offline().
  *
  * 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.
  */
 struct device {
         struct device           *parent;
 
-
--[[linux-4.4.1/parent]]

         struct device_private   *p;
 
-
--[[linux-4.4.1/device_private]]

         struct kobject kobj;
-
--[[linux-4.4.1/kobj]]

         const char              *init_name; /* initial name of the device */
         const struct device_type *type;
 
-
--[[linux-4.4.1/device_type]]

         struct mutex            mutex;  /* mutex to synchronize calls to
                                          * its driver.
                                          */
 
-
--[[linux-4.4.1/mutex]]

         struct bus_type *bus;           /* type of bus device is on */
-
--[[linux-4.4.1/bus_type]]

         struct device_driver *driver;   /* which driver has allocated this
                                            device */
-
--[[linux-4.4.1/device_driver]]

         void            *platform_data; /* Platform specific data, device
                                            core doesn't touch it */
         void            *driver_data;   /* Driver data, set and get with
                                            dev_set/get_drvdata */
         struct dev_pm_info      power;
         struct dev_pm_domain    *pm_domain;
 
-
--[[linux-4.4.1/dev_pm_info]]
--[[linux-4.4.1/dev_pm_domain]]

 #ifdef CONFIG_GENERIC_MSI_IRQ_DOMAIN
-
--[[linux-4.4.1/CONFIG_GENERIC_MSI_IRQ_DOMAIN]]

         struct irq_domain       *msi_domain;
-
--[[linux-4.4.1/irq_domain]]

 #endif
 #ifdef CONFIG_PINCTRL
-
--[[linux-4.4.1/CONFIG_PINCTRL]]

         struct dev_pin_info     *pins;
-
--[[linux-4.4.1/dev_pin_info]]

 #endif
 #ifdef CONFIG_GENERIC_MSI_IRQ
-
--[[linux-4.4.1/CONFIG_GENERIC_MSI_IRQ]]

         struct list_head        msi_list;
-
--[[linux-4.4.1/list_head]]

 #endif
 
 #ifdef CONFIG_NUMA
-
--[[linux-4.4.1/CONFIG_NUMA]]

         int             numa_node;      /* NUMA node this device is close to */
 #endif
         u64             *dma_mask;      /* dma mask (if dma'able device) */
         u64             coherent_dma_mask;/* Like dma_mask, but for
                                              alloc_coherent mappings as
                                              not all hardware supports
                                              64 bit addresses for consistent
                                              allocations such descriptors. */
         unsigned long   dma_pfn_offset;
 
         struct device_dma_parameters *dma_parms;
 
-
--[[linux-4.4.1/device_dma_parameters]]

         struct list_head        dma_pools;      /* dma pools (if dma'ble) */
 
         struct dma_coherent_mem *dma_mem; /* internal for coherent mem
                                              override */
-
--[[linux-4.4.1/dma_coherent_mem]]

 #ifdef CONFIG_DMA_CMA
-
--[[linux-4.4.1/CONFIG_DMA_CMA]]

         struct cma *cma_area;           /* contiguous memory area for dma
                                            allocations */
-
--[[linux-4.4.1/cma]]

 #endif
         /* arch specific additions */
         struct dev_archdata     archdata;
 
-
--[[linux-4.4.1/dev_archdata]]

         struct device_node      *of_node; /* associated device tree node */
-
--[[linux-4.4.1/device_node]]

         struct fwnode_handle    *fwnode; /* firmware device node */
 
-
--[[linux-4.4.1/fwnode_handle]]

         dev_t                   devt;   /* dev_t, creates the sysfs "dev" */
         u32                     id;     /* device instance */
 
-
--[[linux-4.4.1/dev_t]]

         spinlock_t              devres_lock;
         struct list_head        devres_head;
 
-
--[[linux-4.4.1/spinlock_t]]

         struct klist_node       knode_class;
         struct class            *class;
         const struct attribute_group **groups;  /* optional groups */
 
-
--[[linux-4.4.1/klist_node]]
--[[linux-4.4.1/class]]
--[[linux-4.4.1/attribute_group]]

         void    (*release)(struct device *dev);
         struct iommu_group      *iommu_group;
 
-
--[[linux-4.4.1/iommu_group]]

         bool                    offline_disabled:1;
         bool                    offline:1;
 };


*コメント [#yc4c94c3]


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS