LoGin 6b4e7a2972
增加kernfs (#386)
* 增加kernfs

* kernfs文档
2023-09-19 19:46:59 +08:00

1.7 KiB
Raw Blame History

KernFS

:::{note}

Maintainer:

1. 简介

KernFS是一个伪文件系统它充当其它内核文件系统的容器面向用户提供文件接口。其核心功能就是当kernfs的文件被读/写或者触发回调点的时候,将会对预设的回调函数进行调用,触发其它内核文件系统的操作。

这种设计使得SysFS和文件系统的基本操作解耦KernFS作为SysFS的承载物使得SysFS能更专注于KObject的管理让代码更加优雅。

在未来DragonOS的内核子系统或者其它的内核文件系统可以使用KernFS作为文件系统操作的承载物让系统管理的逻辑与具体的文件系统操作解除耦合。

2. 使用方法

以SysFS为例新创建一个KernFS实例作为SysFS的文件系统接口然后挂载到/sys目录下。接着sysfs实现上层逻辑管理KObject每个上层的Kobject里面都需要包含KernFSInode。并且通过设置KernFSInode的PrivateData使得KernFS能够根据Inode获取到其指向的KObject或者sysfs的attribute。并且在创建KernFSInode的时候为具体的Inode传入不同的callback以此实现“不同的Inode在读写时能够触发不同的回调行为”。

当发生回调时KernFS会把回调信息、私有信息传入到回调函数中让回调函数能够根据传入的信息获取到对应的KObject或者sysfs的attribute从而实现sysfs提供的高层功能。

从上述描述我们能够看出KernFS就是通过存储上层文件系统的回调函数、回调信息来实现“把具体文件操作与高层管理逻辑进行解耦”的目的。