systemtapスクリプト内でc言語を使う

昨日書き忘れたので追記


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