sysfs

太难了吧,看着看着就晕了,仍是一个一个地仔细研究一下再写大做业吧java

0x01 定义(参考书本)数组

表示系统中设备树的一个文件系统
spa

0x02 前置知识(kobject,kset)指针

kobject对象

内核中有一个统一设备模型,提供了一个独立的机制专门来表示设备,并描述其在系统中的拓扑结构。设备模型的核心部分就是kobject,相似于java中的对象类,提供了诸如引用计数、名称和父指针等字段能够建立对象的层次结构
blog

kobject一般是嵌入其余结构的,单独意义其实不大,例如cdev结构体中用到的kobject
容器

这样子理解的话就是一个通用的对象结构体,咱们在建立咱们须要的对象的结构体时候,其结构体中会嵌入该kpbject结构体,从而能够拥有引用计数等那些功能
变量

ktype
object

描述kobject所具备的广泛特性,对应的结构体为kobj_type结构体
引用

 

 sysfs_ops变量指向sysfs_ops结构体,该结构体描述了sysfs文件读写时的特性;default_attrs指向一个attribute结构体数组,该结构体定义了该kobject相关默认属性

kset

kset是kobject对象的集合体。把它当作是一个容器,将全部相关的kobject对象置于同一位置

0x03 sysfs具体解释

是一个虚拟文件系统,为咱们提供了kobject对象层次结构视图,将kobject对象和目录项紧密联系起来(kobject对象中的dentry(目录项结构体)实现的),将kobject映射到某目录上

我的理解,sysfs实际上就是目录结构图???每一个目录又对应的是一个kobject,sysfs仅仅是一颗树,不提供任何实际数据的文件。

全部具备相同类型的kobject在它们对应的sysfs目录下拥有相同的默认文件集合,属性文件

 

 

 

 当从用户空间读取sysfs的项时调用show()方法,拷贝由sttr提供的属性值到buffer指定的缓冲区中,缓冲区大小为PAGE_SIZE字节;store()方法在写操做时调用,它会从buffer中读取size大小字节,将其放入attr表示的属性结构体变量中。

相关文章
相关标签/搜索