linux device_attr 权限,Linux内核宏DEVICE_ATTR使用

1、前言

在Linux驱动程序编写中,使用DEVICE_ATTR宏,可以定义一个struct device_attribute设备属性,并使用sysfs的API函数,便可以在设备目录下创建出属性文件,当我们在驱动程序中实现了show和store函数后,便可以使用cat和echo命令对创建出来的设备属性文件进行读写,从而达到控制设备的功能。

2、宏DEVICE_ATTR定义

在讲解DEVICE_ATTR宏之前,先了解一些基本的结构体,首先是struct attribute结构体,其定义在include/linux/device.h中,结构体定义如下所示:

structattribute {const char *name;

umode_t mode;

#ifdef CONFIG_DEBUG_LOCK_ALLOCbool ignore_lockdep:1;struct lock_class_key *key;structlock_class_key skey;#endif};

该结构体有两个重要的成员,分别是name和mode,其中name代表属性的名称,一般表示为文件名,mode代表该属性的读写权限,也就是属性文件的读写权限。

关于文件的权限详解,可以参考下面的链接:

https://blog.csdn.net/DLUTBruceZhang/article/details/8658475

接下来要了解的结构体为struct device_attribute,该结构体的定义在include /linux/device.h,其定义如下:

/*interface for exporting device attributes*/

structdevice_attribute {structattribute attr;

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

};

该结构体其实是struct attribute结构体的进一步封装,并提供了两个函数指针,show函数用于读取设备的属性文件,而store则是用于写设备的属性文件,当我们在Linux的驱动程序中实现了这两个函数后,便可以使用cat和echo命令对设备属性文件进行读写操作。

了解了一下基本的结构体,接下来,进一步分析宏DEVICE_A

你可能感兴趣的:(linux,device_attr,权限)