kprobe_events выборка аргументов не работает на ARM - PullRequest
0 голосов
/ 10 мая 2018

Следующий пример события kprobe_based работает хорошо:

$ echo 'p:myprobe do_sys_open' > /sys/kernel/debug/tracing/kprobe_events

Но добавление аргументов извлечения не работает:

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

Я думаю, что проблема в %ax, %dx ... В чем их смысл? И как я могу заставить этот код работать?

1 Ответ

0 голосов
/ 12 мая 2018

%ax, %dx и т. Д. Относятся к регистрам вашей системы. Как указывалось в документации , вам нужно изменить их, если ваша архитектура не x86:

Обратите внимание, какая запись регистра / стека назначается каждому аргументу функции, зависит от специфичного для арки ABI.

Так как похоже, что вы на руке (тег raspberry-pi), вы можете использовать следующее:

$ echo 'p:myprobe do_sys_open dfd=%r0 filename=%r1 flags=%r2 mode=%r3' > /sys/kernel/debug/tracing/kprobe_events
...