新城@筑波大学情報です。こんにちは。

In article <h566le$ti$1@aioe.org>
        tesigana@diary.ocn.ne.jp (tesigana@diary.ocn.ne.jp) writes:
> fbt::namei:entry
> /pid == $target/
> {
>    p = (struct nameidata *)arg0;
>    printf("%p", p->ni_dirp);
> }
> のように使用できます。
> # dtrace -s foo -c "..."

ありがとうございます。次のスクリプトで、だいたい思った通りの
動きになりました。

------------------------------------------------------------
% cat dtrace-namei.d
fbt::namei:entry
/pid == $target/
{
        p = (struct nameidata *)arg0;
        printf("%s", copyinstr(p->ni_dirp));
}
% dtrace -s dtrace-namei.d -c "/bin/ls /"
dtrace: script 'dtrace-namei.d' matched 1 probe
<lsの表示>
dtrace: pid 65668 has exited
CPU     ID                    FUNCTION:NAME
  1  12951                      namei:entry /
  1  12951                      namei:entry .
  1  12951                      namei:entry /
% 
------------------------------------------------------------

これは、いいですね。nameidata は、次の所に定義がありました。
FreeBSD とも同じなのでしょう。

http://opensource.apple.com/source/xnu/xnu-1228.9.59.color/bsd/sys/namei.h
http://opensource.apple.com/source/xnu/xnu-1228.9.59.color/bsd/vfs/vfs_lookup.c

dtrace で動的リンク・ライブラリ等も表示されるのかと思ったの
ですが、出てきません。MacOSX/Darwin で Mach-O executable を
読込むにしても、namei() は呼ばれるだろうに。どうしてかなあ。

------------------------------------------------------------
% file /bin/ls
/bin/ls: Mach-O universal binary with 2 architectures
/bin/ls (for architecture i386):        Mach-O executable i386
/bin/ls (for architecture ppc7400):     Mach-O executable ppc
% otool -L /bin/ls
/bin/ls:
        /usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.3)
% 
------------------------------------------------------------

In article <h566le$ti$1@aioe.org>
        tesigana@diary.ocn.ne.jp (tesigana@diary.ocn.ne.jp) writes:
> また、-v でターゲットの詳細をレポートしてくれます。
> # dtrace -lvn fbt::namei:entry

dtrace -v でも、残念ながら MacOSX ではそんなに詳しくは出てき
ませんでした。
------------------------------------------------------------
% dtrace -lvn fbt::namei:entry
   ID   PROVIDER            MODULE                          FUNCTION NAME
12951        fbt       mach_kernel                             namei entry

        Probe Description Attributes
                Identifier Names: Private
                Data Semantics:   Private
                Dependency Class: Unknown

        Argument Attributes
                Identifier Names: Private
                Data Semantics:   Private
                Dependency Class: ISA

        Argument Types
                None
%
------------------------------------------------------------

private と言われてもね。これは、ソース見るしかなさそう。

In article <h566le$ti$1@aioe.org>
        tesigana@diary.ocn.ne.jp (tesigana@diary.ocn.ne.jp) writes:
> しかも、namei って関数は Solaris にないし...

Solaris のマニュアルには、一応あるけれど、関数という訳ではな
いですね。「sysinfo プロバイダのプローブ」と書いてあります。

http://docs.sun.com/app/docs/doc/819-6259/gbxwz?a=view

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報       \\