1. 作用
使用DEVICE_ATTR往sysfs中为device添加“属性文件”,并对该文件添加相关操作,从而实现运行过程中动态控制device。
2. 一些定义
首先看一下与DEVICE_ATTR相关的宏定义,定义位置在kernel/include/linux/device.h中。
#define DEVICE_ATTR(_name, _mode, _show, _store) \
struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
DEVICE_ATTR宏定义中又引用了__ATTR宏定义,__ATTR定义在kernel/include/linux/sysfs.h中。
#define __ATTR(_name, _mode, _show, _store) { \
.attr = {.name = __stringify(_name), \
.mode = VERIFY_OCTAL_PERMISSIONS(_mode) }, \
.show = _show, \
.store = _store, \
}
再看看struct device_attribute的定义,该结构体定义在kernel/include/linux/device.h中。