2015-10-13 124 views
1

kprobe document如何在kprobe中使用寄存器?

echo 'p:myprobe do_sys_open dfd=%ax filename=%dx flags=%cx mode=+4($stack)' > /sys/kernel/debug/tracing/kprobe_events 

按我的理解,對X86_64平臺,參數應傳遞到寄存器(請參閱X86_64 syscalls)。所以,我認爲加上探頭應該是這樣的:

echo 'p:myprobe do_sys_open dfd=%rdi filename=%rsi flags=%rdx mode=%rcx' > /sys/kernel/debug/tracing/kprobe_events 

但是執行上面的語句,bash抱怨:

-bash: echo: write error: Invalid argument 

所以我的問題是:如何使用寄存器kprobe?哪些寄存器有效?

回答

2

kprobe維護者討論後,我得到了答案:

ftrace-kprobe接口不接受位寬前綴,如「rax」而是接受「ax」。該位寬由架構自動選擇。所以請從所有參數中刪除'r'。如果您想訪問eaxax,則可以使用類型轉換,如%ax:u32

相關問題