利用VFS截获系统调用的方法:http://blog.csdn.net/yun2205446823/article/details/50767690
bug1:利用makefile进行编译时直接编译出现 no rule to make target kernel/bounds.c 或者bound.c need bound.s(记不清了。。。)
解决方法:尝试使用sudo -s make(注意有时sudo make 与 make 都会编译不成功,但是sudo -s make 可以成功,不清楚原因。。)
bug2:编译不通过,提示readdir为只读对象,不允许更改。
解决方法:引入一中间变量,如VFS截获调用的代码(以http://blog.csdn.net/yun2205446823/article/details/50767690为例)中,
利用一中间变量fop间接更改filep对应的readdir.
bug3:系统崩溃,并提示 BUG:unable to handle kernel paging request at XXXXXXXXXXX(一个地址)
解决方法:在模块初始化时将控制寄存器CR0的第16位清零,并在卸载模块时进行还原,参考http://blog.csdn.net/szkbsgy/article/details/9970315
代码示例:
清除标志位:
static int clear_cr0(void)
{