sysfs属性是否可以在Linux设备驱动程序中使用非数字值?

时间:2016-09-05 06:52:42

标签: linux-kernel linux-device-driver device-driver sysfs

我正在开发一个Linux设备驱动程序,我必须使用sysfs接口将一串字符传递给它。 sysfs属性是否可以接受字符串形式的数据(类似echo "somedata" > sysfs_interface)?

我已经在上面实现了它,它似乎工作正常,但我想确定这是有效的(在内核社区可接受)。

1 个答案:

答案 0 :(得分:7)

  

sysfs属性是否可以接受字符串形式的数据...

是。
实际上,这是sysfs在您使用echo时接受的内容。当您使用echo 0时,输出是两个字节,0x30(数字零的ASCII码)和0x0A(换行符)。

例如,GPIO LED接口使用关键字来报告和选择触发器。

# cat /sys/class/leds/d8/trigger
none nand-disk mmc0 timer [heartbeat] gpio

(括号中的关键字表示当前选择,即心跳计时器。)

# echo none > /sys/class/leds/d8/trigger
# cat /sys/class/leds/d8/trigger
[none] nand-disk mmc0 timer heartbeat gpio
  

...(类似于echo "somedata" > sysfs_interface

您甚至不需要使用引号 请参阅上面将LED触发器设置为none的示例。

ADDENDUM

  

这些是自定义界面......

不,这是在主线。

  

...但是子系统提供的那个呢?

权威答案来自Linux Documentation/filesystems/sysfs.txt

Attributes should be ASCII text files, preferably with only one value
per file.