在linux内核(4.5.5)中,我向mm/filemap.c添加了printk()
。
我添加的代码位于__generic_file_write_iter()
:
if(io_tracing_on) {
ssize_t write_size = iov_length(from->iov, from->nr_segs);
printk(KERN_INFO "write size=%zu, pid=%d, inode=%lu\n", write_size, task_pid_nr(current), inode->i_ino);
}
当io_tracing_on
评估为true时,我得到一个连续的输出流(在different question中讨论),如下所示:
Jun 27 15:00:41 malka kernel: [ 463.424155] write size=168, pid=715, inode=7864653
Jun 27 15:00:41 malka kernel: [ 463.428064] write size=168, pid=715, inode=7864354
在这个连续的输出流中,我试图将pid(715)映射到ps -ef
的输出,但无效 - 进程列表中不存在pid。有没有办法让我确定task_pid_nr(current)
指的是哪个流程?