正文
浅析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 mutexmutex;/* 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_infopower;
struct dev_pm_domain*pm_domain;
#ifdef CONFIG_NUMA
intnuma_node;/* NUMA node this device is close to */
#endif
u64*dma_mask;/* dma mask (if dma'able device) */
u64coherent_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_headdma_pools;/* dma pools (if dma'ble) */
struct dma_coherent_mem*dma_mem; /* internal for coherent mem override */
/* arch specific additions */
struct dev_archdataarchdata;
struct device_node*of_node; /* associated device tree node */
dev_tdevt;/* dev_t, creates the sysfs "dev" */
u32id;/* device instance */
spinlock_tdevres_lock;
struct list_headdevres_head;
struct klist_nodeknode_class;
struct class*class;
const struct attribute_group **groups;/* optional groups */
void(*release)(struct device *dev);
};