Re: Sun DTrace namei()
yas@is.tsukuba.ac.jp (Yasushi Shinjo) writes:
> 新城@筑波大学情報です。こんにちは。
> dtrace で namei() を調べる方法について、うまく行った人はいま
> せんか。
DTrace は、半年以上前にあまりよくわかっていないで使っていたので、
かなり忘却してますし、
しかも、namei って関数は Solaris にないし...
># dtrace -l | egrep namei
>12951 fbt mach_kernel namei entry
>12952 fbt mach_kernel namei return
左から、ターゲットの ID, PROVIDER, MODULE, FUNCTION, NAME を表していて、
それぞれ、dtrace の -i, -P, -m, -f, -n オプションで指定できます:
# dtrace -li 12951
# dtrace -lP fbt | grep namei
# dtrace -lm mach_kernel | grep namei
# dtrace -lf namei
# dtrace -ln fbt::namei:entry
また、-v でターゲットの詳細をレポートしてくれます。
# dtrace -lvn fbt::namei:entry
を実行すれば、たぶん、
Argument Types
args[0]: struct nameidata *
というのがレポートされると思います。
これは、DTrace スクリプト内で、
fbt::namei:entry
/pid == $target/
{
p = (struct nameidata *)arg0;
printf("%p", p->ni_dirp);
}
のように使用できます。
# dtrace -n 'fb::namei:entry /pid == $target/ {...}' -c "..."
とか、上記スクリプトをファイル(foo)に書いて、
# dtrace -s foo -c "..."
とかすれば、良いのじゃないかなぁ :-)
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735