Path: news.ccsf.jp!norn-news!netnews.mcu.or.jp!jindaiji.chofu.tokyo.jp!gcd.org!leaf.gcd.org!news.unit0.net!newsfeed.freenet.de!multikabel.net!newsfeed20.multikabel.net!zen.net.uk!dedekind.zen.co.uk!aioe.org!not-for-mail From: tesigana@diary.ocn.ne.jp (tesigana@diary.ocn.ne.jp) Newsgroups: fj.sys.mac.os-x,fj.sys.sun Subject: Re: Sun DTrace namei() Date: Mon, 03 Aug 2009 17:21:00 +0900 Organization: Yokohama City, Japan Lines: 53 Message-ID: References: NNTP-Posting-Host: lZb5ZZKlp4rBdE5hmRUgNQ.user.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=iso-2022-jp X-Complaints-To: abuse@aioe.org X-Notice: Filtered by postfilter v. 0.7.9 Cancel-Lock: sha1:rDVCRUZL8oY3mqjmL1qJrovtUAs= User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.3 (gnu/linux) Xref: news.ccsf.jp fj.sys.mac.os-x:1288 fj.sys.sun:334 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 "..." とかすれば、良いのじゃないかなぁ :-)