Разница между .function () и .function (). Вызов в systemtap - PullRequest
0 голосов
/ 21 декабря 2018

Я изучаю утилиту системного крана для отладки ядра Linux.

Вот пример кода:

probe module("e1000").function("e1000_get*") {
printf("%s\n", ppfunc())
}

probe module("e1000").function("e1000_get*").return {
printf("%s \n", ppfunc())
}

В чем разница между

probe module("e1000").function("e1000_get*") идатчик module("e1000").function("e1000_get*").call

Я знаю, что вызов для входа в функцию, выше для входа и выхода

1 Ответ

0 голосов
/ 21 декабря 2018

С docs :

Вариант .function размещает пробник рядом с началом названной функции, так что параметры доступны какпеременные контекста.

Вариант .return помещает зонд в момент возврата из названной функции, поэтому возвращаемое значение доступно как переменная контекста $ return.Параметры ввода также доступны, хотя функция могла изменить их значения.

...

Модификатор .inline для .function фильтрует результаты ввключать только экземпляры встроенных функций.Модификатор .call выбирает противоположное подмножество.

Таким образом, модификатор .call предназначен для получения только результатов "вызовов" (как таковых) из результатов.

...