对于一位专业的工程师而言:自己所属的工作不能存在丝毫马虎
本文主要分析和探讨1. sysfs之属性文件attribute file是如何注册?直白些(不装B),我们怎么去使用attribute 来操作硬件设备,从而实现我们的功能。
这里需要sysfs 虚拟文件系统相关的背景知识,最好去了解sysfs 的机制与理论知识,本文尽量不牵扯太多。
一、什么是属性?什么是Kobject?
在众多操作系统当中,例如windows 操作系统随处可见的文件,然而把所有的软件都放置在文件目录当中,文件系统基本都是树形结构,而作为操作系统的始祖UNIX,到Linux 也是一切皆文件,好处就是使用者与底层设备隔离,用户不需要去对硬件设备做过多了解也可以随意使用,在sysfs下每个目录 由Kobject表示,每一个文件由attribute 表示;直白些,看到的文件对应程序当中的attribute 结构体,看到的目录对应于程序当中的 Kobject结构体。
说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR,原型是
#define DEVICE_ATTR(_name, _mode, _show, _store) \
struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
函数宏DEVICE_ATTR内封装的是__ATTR(_name,_mode,_show,_stroe)方法