sysfs是一个特殊的文件系统,可以设备驱动模型之间的层级关系。可以通过这个文件系统来操作设备。有些设备还只能用sysfs来使用。sysfs可以通过读写数据对设备进行具体的操作。ioctl也可以读写数据,但是有些场合还是使用sysfs更合适。
sysfs可以在控制台和shell脚本上直接和用户空间进行交互,而ioctl需要编写个c程序才能运行。因此在这方面sysfs更合适。
sysfs可以将设备属性直接展示给用户,比如要对一个LED等做一些操作,先查看一下这个led的属性
代码语言:javascript复制/sys/class/leds/led1# lsbrightness device invert max_brightness power subsystem trigger uevent
基本都会有这么些个属性,先假设控制亮度的驱动都编写了,可以根据 max_brightness的值确定最大亮度。
代码语言:javascript复制root@xxx:/sys/class/leds/led1# cat max_brightness255
再将对应亮度值输入控制亮度
代码语言:javascript复制root@xxx:/sys/class/leds/led1# echo 100 > brightness
如果同样的功能使用ioctl来做需要先查询对应功能的标志位,比较麻烦。
因此有些功能使用sysfs来做更合适。