Linux为什么有些驱动必须用sysfs

2023-09-01 13:27:00 浏览数 (1)

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来做更合适。

0 人点赞