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

在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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值