浅析struct device结构体

Posted -glb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅析struct device结构体相关的知识,希望对你有一定的参考价值。

device结构体:设备驱动模型中的基础结构体之一

struct device {

  /*设备所依附的父设备

  大多数情况下,这样的设备是某种总线或主控制器

  如果该成员变量的值为NULL,表示当前设备是一个最顶端设备,通常这样的设备都不是你想得到的那个*/

  struct device *parent;

  struct device_private *p;

  struct kobject kobj;
  const char *init_name; /* initial name of the device */
  const struct device_type *type;

  struct mutex mutex; /* mutex to synchronize calls to  its driver.*/

  struct bus_type *bus; /* type of bus device is on */
  struct device_driver *driver; /* which driver has allocated this device */
  void *platform_data; /* Platform specific data, device core doesn‘t touch it */
   struct dev_pm_info power;
  struct dev_pm_domain *pm_domain;

#ifdef 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. */

  struct device_dma_parameters *dma_parms;

  struct list_head dma_pools; /* dma pools (if dma‘ble) */

  struct dma_coherent_mem *dma_mem; /* internal for coherent mem override */
/* arch specific additions */
  struct dev_archdata archdata;

  struct device_node *of_node; /* associated device tree node */

  dev_t devt; /* dev_t, creates the sysfs "dev" */
  u32 id; /* device instance */

  spinlock_t devres_lock;
  struct list_head devres_head;

  struct klist_node knode_class;
  struct class *class;
  const struct attribute_group **groups; /* optional groups */

  void (*release)(struct device *dev);
};

 



















以上是关于浅析struct device结构体的主要内容,如果未能解决你的问题,请参考以下文章

设备树——dtb格式到struct device node结构体的转换

Windows驱动开发-Device结构体

浅析内存对齐与ANSI C中struct型数据的内存布局

驱动中重要的三个结构体介绍:struct inodestruct filestruct file_operations

C语言结构体中struct和typedef struct有啥区别?

怎么把一个结构体中的数据复制到另一个相同类型的结构体数组中