struct device结构体
时间: 2023-06-23 13:54:32 浏览: 197
Linux-2.6.38驱动的几个结构体关系总结
`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`:指向设备释放函数的指针。
阅读全文