关于今后的进展
好长时间不来了,前一阵子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的地方。
要断网了,先写这么多。有疑问直接回复。
我对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的地方。
要断网了,先写这么多。有疑问直接回复。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步