昨日書き忘れたので追記。
systemtapスクリプト内でc言語を使う場合で、かつ、関数を作成してその引数をcのコードで触りたい場合とかcのコードの戻り値をsystemtapのスクリプトで触りたい場合。次のように書く。
例えば、long型のaとbを引数として渡され、それらの和を返す関数だと
$ cat sample.stp function sample_func:long (a:long, b:long) %{ THIS->__retvalue = THIS->a + THIS->b; %} probe begin { a = 1; b = 2; printf("a = %d\n", a); printf("b = %d\n", b); printf("a + b = %d\n", sample_func(a, b)); }
実行するとこんな感じ。
$ stap -g sample.stp a = 1 b = 2 a + b = 3