參考資訊:
https://www.kernel.org/doc/html/latest/filesystems/sysfs.html
範例:
static ssize_t test_show(struct device *dev, struct device_attribute *attr, char *buf)
{
return sprintf(buf, "%d\n", 0x1234);
}
static ssize_t test_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{
int rc = -1;
unsigned long v = 0;
rc = kstrtoul(buf, 0, &v);
if (rc) {
return rc;
}
printk("set value: %ld\n", v);
return count;
}
static DEVICE_ATTR_RW(test);
static int xxx_probe(struct platform_device *pdev)
{
// ...
device_create_file(&pdev->dev, &dev_attr_test);
}
static int xxx_remove(struct platform_device *pdev)
{
// ...
device_remove_file(&pdev->dev, &dev_attr_test);
}
用法:
$ cat /sys/devices/xxx/test
0x1234
$ echo 0x1234 > /sys/devices/xxx/test