今天在一个问题上耗了大半天,原因就是这个asmlinkage。
由于要hook write系统调用,所以当模块执行到这句
orig_sys_call_table[__NR_write] = (u32 *)nwr;
的时候,系统总崩溃。
查看日志可以定位到是这句的错,用gdb一步一步跟,算是过去了,但是只要continue,系统还是down掉。
没办法,看来是找不出这句的错误所在了。索性把这句换成
orig_sys_call_table[__NR_write] = (u32 *)owr;
(nwr是新的write系统调用的指针,owr是原来的write系统调用的指针)
顺利加在模块。
所以就想到了可能是新的write指针和原来的write指针可能定义上有所差别,一对比,发现新的write少了
这个asmlinkage
随便g了一下,才明白是怎么回事。
这里有几篇对asmlinkage的解释:
http://www.jollen.org/blog/2006/10/_asmlinkage.htmlhttp://blog.csdn.net/zxj2008cn/archive/2006/05/11/725241.aspx
阅读(1029) | 评论(0) | 转发(0) |