关于今后的进展

好长时间不来了,前一阵子cebit去了。现在刚刚回归正常的生活轨道。对PRP所做的工作,大抵也是五一期间的进展

我对fist生成的改动主要是在file.c,针对file_operation进行改动。改动的方法之前已经说过了。对目前的实现方式感到不满。一个open()的系统调用下来,到内核空间转换成sys_open(),之后filp_open(),open_namei()解析名称,在内存里进程的file_struct中建立file数据结构。之后调用dentry_open()函数将dentry和file数据结构挂起来。dentry_open()会象填表一样填完file数据结构中一些如fd,sb等等然后调用文件系统的file_open函数。正常的文件系统比如调用ext3_fileopen(),而在fist生成的代码中会多一个过程,就是利用上次说到的宏找到hidden_dentry,然后针对hidden_dentry调用dentry_open函数。之后的过程就都一样了。我所做的工作就是改变hidden_dentry指向的dentry结构以实现偷梁换柱的目的。


我觉得这种做法很没效率,没准效果适得其反反而增加系统开销。毕竟中间多了好几次dentry查找过程。我想问问heavenbirdfly要是用设备驱动实现的话该怎么做。关键问题是名称解析这个工作相当上层。如果能够把sys_open这个函数置换掉是最好不过了。但是这样的结果是对于所有文件系统都要做名称变换而不只是我们mount的地方。

要断网了,先写这么多。有疑问直接回复。
原文地址:https://www.cnblogs.com/acesyp/p/156769.html