1. sysfs
1.1 前言
在linux系统中,用户空间访问驱动程序一般是以“设备文件”的方式通过“read/write/ioctl”
访问,但这种方式有几个明显的缺点。
- read/write接口功能单一
- ioctl虽然可以根据cmd参数实现多重功能,但它们都无法直接在shell/mash脚本中被调用,必须通过C语言方式访问
- ioctl二进制数据接口存在大小端问题,不同平台CPU(32/64)不方便移植
除了“设备文件”方式,驱动程序还可以实现procfs虚拟文件系统接口,提供给用户访问。procfs访问驱动程序,同样使用的是"read/open/ioctl"
接口,因此也存在“设备文件”方式中的类似问题。
因此,linux系统从2.6版本内核开始引入一个独立的抽象接口来描述设备和驱动信息,即是sysfs虚拟文件系统。
1.2 什么是sysfs
sysfs是linux系统下一个基于内存的文件系统,主要功能是将设备(device)和驱动(driver)内容通过文件的方式从内核空间映射到用户空间,方便用户对设备和驱动进行访问和设置。实现了sysfs文件接口,会在指定目录下将驱动读写空间生成一个临时文件,该文件可以直接通过shell命令的“echo”
、“cat”
访