如何编写 stap (systemtap) 脚本来查看某个进程是否调用了特定的内核函数?

How to script stap (systemtap) to see if some process has called specific kernel function?

使用stap,我可以将*.stp文件写入

跟踪进程的操作,例如:

probe process("mytest").begin
{
    printf("Caught mytest process")
}

或者跟踪内核函数是否被任何进程调用:

probe kernel.function("do_exit").call #all processes
{
    printf("called kernel/exit.c: do_exit\n")
}

但我的要求是:跟踪来自特定进程名称的内核函数调用,例如跟踪由 "mytest" 个进程调用的 "sys_open"。

这个.stp怎么写statement/function? 谢谢!

我找到了一种方法:使用一个指示程序名称的变量

global prog_name = "mytest";
probe kernel.function("do_exit").call
{
   if(execname() == progname){
        printf("called kernel/exit.c: do_exit\n");     
   }

}