使用DEVICE_ATTR,可以在sys fs中添加“文件”,通过修改该文件内容,可以实现在运行过程中动态控制device的目的。
在documentation/driver-model/Device.txt中有对DEVICE_ATTR的详细介绍,这儿主要说明使用方法。
DEVICE_ATTR对应的文件在/sys/devices/目录中对应的device下面,DRIVER_ATTR,BUS_ATTR,CLASS_ATTR分别在driver,bus,class中对应的目录下。
DEVICE_ATTR(_name, _mode, _show, _store)
_name:名称,也就是将在sys fs中生成的文件名称。
_mode:上述文件的访问权限,与普通文件相同,UGO的格式。
_show:显示函数,cat该文件时,此函数被调用。
_store:写函数,echo内容到该文件时,此函数被调用。
模式可以为只读0444,只写0222,或者读写都行的0666。
显示函数的一般实现:
static ssize_t xxx_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
return scnprintf(buf, PAGE_SIZE, "%d\n", dma_dump_flag);
}
我自己写的驱动
/**
* irfpa_show_nucdata() - This function show the nucdata register.
*