您的位置:首页 > 运维架构 > Linux

linux-设备驱动之device设备结构

2013-12-24 15:03 288 查看
在linux系统中每一个设备由结构体::struct device来描述

struct device {

struct device
*parent;

struct device_private*p;

struct kobject kobj;

const char*init_name; /* initial name of the device--用来描述设备的 */

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 thisdevice --管理该设备的驱动*/

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

struct dev_pm_infopower;

#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_headdma_pools;
/* dma pools (if dma'ble) */

struct dma_coherent_mem*dma_mem; /* internal for coherent mem

override */

/* arch specific additions */

struct dev_archdataarchdata;

#ifdef CONFIG_OF

struct device_node*of_node;

#endif

dev_t devt;/* dev_t, creates the sysfs "dev" */

spinlock_t
devres_lock;

struct list_headdevres_head;

struct klist_nodeknode_class;

struct class
*class;

const struct attribute_group **groups;/* optional groups */

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

};

注册设备使用的函数

device_register(struct device *dev);

注销设备使用的函数

device_unregister(struct device *dev);

设备属性结构体 device_attribute描述

struct device_attribute {

struct attributeattr;

ssize_t (*show)(struct device *dev, struct device_attribute *attr,

char *buf);//读取时 调用的函数

ssize_t (*store)(struct device *dev, struct device_attribute *attr,

const char *buf, size_t count);//写入时 调用的函数

};

创建属性函数

device_create_file(struct device *device,const struct device_attribute *entry);

删除属性文件

device_remove_file(struct device *dev,const struct device_attribute *attr);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: