linux device结构体,struct device结构体

一、定义:

linux/include/linux/device.h

struct device {

struct klist     klist_children;

struct klist_node   knode_parent;      /* node in sibling list */

struct klist_node       knode_driver;

struct klist_node       knode_bus;

struct device           *parent;

struct kobject kobj;

char    bus_id[BUS_ID_SIZE];    /* position on parent bus */

struct device_type      *type;

unsigned     is_registered:1;

unsigned     uevent_suppress:1;

struct semaphore sem;    /* semaphore 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   *driver_data;   /* data private to the driver */

void   *platform_data; /* Platform specific data, device core doesn't touch it */

str

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`struct device` 是 Linux 内核中表示硬件设备的结构体之一。它定义在 `<linux/device.h>` 头文件中,其定义如下: ```c struct device { struct device *parent; struct device_private *p; struct kobject kobj; const char *init_name; 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; int numa_node; u64 *dma_mask; u64 coherent_dma_mask; struct device_dma_parameters *dma_parms; struct list_head dma_pools; struct dma_coherent_mem *dma_mem; struct dev_archdata archdata; struct device_node *of_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); }; ``` 这个结构体包含了表示设备的各种属性,例如设备名称、设备类型、设备驱动、设备的 DMA 相关信息等。它的各个字段的含义如下: - `parent`:指向父设备的指针; - `p`:指向 `struct device_private` 结构体的指针,表示设备的私有数据; - `kobj`:用于表示设备的内核对象; - `init_name`:设备的名称; - `type`:指向 `struct device_type` 结构体的指针,表示设备的类型; - `mutex`:用于保护设备的并发访问; - `bus`:指向 `struct bus_type` 结构体的指针,表示设备所在的总线类型; - `driver`:指向 `struct device_driver` 结构体的指针,表示设备所使用的驱动程序; - `platform_data`:指向设备平台数据的指针; - `power`:表示设备电源管理相关的信息; - `pm_domain`:指向设备电源域的指针; - `numa_node`:表示设备所在的 NUMA 节点编号; - `dma_mask`:指向设备 DMA 地址掩码的指针; - `coherent_dma_mask`:表示设备 DMA 地址掩码的值; - `dma_parms`:指向 `struct device_dma_parameters` 结构体的指针,表示设备 DMA 相关的参数; - `dma_pools`:表示设备 DMA 内存池的链表; - `dma_mem`:指向 `struct dma_coherent_mem` 结构体的指针,表示设备的一段连续 DMA 内存; - `archdata`:表示设备的架构相关信息; - `of_node`:指向设备树节点的指针; - `devt`:表示设备的设备号; - `id`:设备的 ID; - `devres_lock`:用于保护设备的资源列表; - `devres_head`:表示设备的资源列表; - `knode_class`:表示设备所属的类; - `class`:指向 `struct class` 结构体的指针,表示设备所属的类; - `groups`:指向属性组数组的指针; - `release`:指向设备释放函数的指针。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值