【发布时间】:2016-01-27 06:45:59
【问题描述】:
我想跟踪对特定文件的写入,所以我想我可以这样做:
我在do_sys_open 上创建一个探针,如果filename 参数与我正在寻找的模式匹配,我使用触发器来启用一个返回探针,以获取返回的文件描述符ID(它是$retval)。这个返回探针将在common_pid 上有一个过滤器,因为我只对刚刚打开我想要监视的filename 的do_sys_open 调用返回的fds 感兴趣。
返回探针采用fd 并在sys_write 上启用另一个探针,并在common_pid 和fd 上使用过滤器。
我希望通过这种方式,我只能跟踪我正在监视的一个文件上的write 操作。
问题在于这不适用于多线程进程。如果一个进程同时调用open 两次(使用两个线程),上述机制可能会失败。现在我正在尝试找出一种方法来在do_sys_open 的条目和do_sys_open 上的返回探测之间建立这种关联,如果有任何建议,我都会很高兴。
PS:我不确定这个问题属于 stackoverflow 还是 unix & linux。
【问题讨论】:
标签: linux linux-kernel ftrace kprobe