-
基本概念
了解Linux configfs优先阅读kernel中configfs的文档,(https://www.kernel.org/doc/Documentation/filesystems/configfs/configfs.txt)。
文档中介绍configfs是基于ram的文件系统,这一点与sysfs很像,但是与sysfs不同之处在于,configfs可以通过在用户态的操作创建和删除内核对象,而我们一般使用sysfs是已经有内核对象之后,再去创建sysfs文件节点。从使用上看都可以通过read write读取/修改文件属性,重点在于sysfs的内核对象是在内核创建、销毁的,sysfs是访问这些内核对象的窗口。但是configfs的内核对象的创建/销毁是由用户态的mkdir等操作完成,用户执行mkdir会在内核创建一个config_item对象,用户执行rmdir会销毁这个对象。
这确实是一个很天才的想法,尤其适合动态修改配置以加载不同驱动的场景。例如,早期的USB只支持单一的gadget设备,使用场景较为简单,随后加入了composite framework,用来支持多个function的gadget设备,多个function的绑定在内核中完成,若需要修改,则需要修改内核,不灵活也不方便。Linux3.11版本引入了基于configfs的usb gadget confi