linux sysfs文件系统
#include <linux/sysfs.h> //需要引用的头文件
static ssize_t mysys_enable_show(struct device *dev, struct device_attribute *attr, char *buf)
}
static ssize_t mysys_enable_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{
//当用户空间写入此属性时要做的操作 如:$echo off > /sys/class/mysys/enable
return 0;
}
//&dev_attr_属性名.attr,
//&dev_attr_enable.attr,
static struct attribute *mysys_attributes[] = {
&dev_attr_enable.attr,
NULL
};
static struct attribute_group mysys_attribute_group = {
//#ifndef STK_ALLWINNER_PLATFORM
// .name = "driver",
//#endif
.attrs = mysys_attributes, //attribute
};
//创建sysfs 属性接口, 成功返回0。 init 或 probe 函数里
error = sysfs_create_group(&stk->input_dev->dev.kobj, &mysys_attribute_group);
if (error)
{
printk(KERN_ERR "%s: sysfs_create_group failed\n", __func__);
//移除sysfs 属性接口。 exit 函数里
#include <linux/sysfs.h> //需要引用的头文件
static ssize_t mysys_enable_show(struct device *dev, struct device_attribute *attr, char *buf)
{
//当用户空间读取此属性时要做的操作 如:$cat /sys/class/mysys/enable
return 0;}
static ssize_t mysys_enable_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{
//当用户空间写入此属性时要做的操作 如:$echo off > /sys/class/mysys/enable
return 0;
}
属性名 权限模式 show函数 store函数
//&dev_attr_属性名.attr,
//&dev_attr_enable.attr,
static struct attribute *mysys_attributes[] = {
&dev_attr_enable.attr,
NULL
};
static struct attribute_group mysys_attribute_group = {
//#ifndef STK_ALLWINNER_PLATFORM
// .name = "driver",
//#endif
.attrs = mysys_attributes, //attribute
};
//创建sysfs 属性接口, 成功返回0。 init 或 probe 函数里
error = sysfs_create_group(&stk->input_dev->dev.kobj, &mysys_attribute_group);
if (error)
{
printk(KERN_ERR "%s: sysfs_create_group failed\n", __func__);
goto exit_sysfs_create_group_error;
//移除sysfs 属性接口。 exit 函数里
sysfs_remove_group(&stk->input_dev->dev.kobj, &mysys_attribute_group);