是否有一种可靠的方法来显式指定BPF kprobe程序的执行顺序(没有kretprobes)。
例如,当我命名程序kprobe__<func>_1
和kprobe__<func>_2
时,我得到的执行顺序是kprobe__<func>_2
-〉kprobe__<func>_1
,这是一个向后的顺序。程序加载的顺序或它的名字有意义吗?我找不到任何关于这方面的文档,也不知道如何确保我的程序将按照我真正需要的顺序在整个内核上执行。
我只是想用后缀_[n]
重命名我的函数,其中n
是严格的正数(包括零),它可以工作,但不能确保它在整个内核上都能工作。
1条答案
按热度按时间c9qzyr3d1#
由于kprobe程序的执行顺序在不同的内核版本中可能会有所不同,因此不可能保证kprobe程序的特定执行顺序。即使依赖于命名约定或程序加载的顺序也不能保证特定的执行顺序。
因此,建议设计相互独立的执行顺序的kprobe程序或将它们组合成一个。