Path: news.ccsf.jp!news.heimat.gr.jp!rlss-news!ie.u-ryukyu.ac.jp!gama.is.tsukuba.ac.jp!yas From: yas@is.tsukuba.ac.jp (Yasushi Shinjo) Newsgroups: fj.sys.mac.os-x,fj.sys.sun Subject: Re: Sun DTrace namei() Date: 05 Aug 2009 05:10:06 GMT Organization: Institute of Information Sciences and Electronics, University of Tsukuba Lines: 63 Message-ID: References: <3993872news.pl@rananim.ie.u-ryukyu.ac.jp> NNTP-Posting-Host: kirk.hlla.is.tsukuba.ac.jp X-Trace: gama.is.tsukuba.ac.jp 1249449000 7241 130.158.83.129 (5 Aug 2009 05:10:00 GMT) X-Complaints-To: news@gama.is.tsukuba.ac.jp NNTP-Posting-Date: Wed, 5 Aug 2009 05:10:00 +0000 (UTC) In-reply-to: kono@ie.u-ryukyu.ac.jp's message of Tue, 4 Aug 2009 06:31:27 +0000 (UTC) Xref: news.ccsf.jp fj.sys.mac.os-x:1291 fj.sys.sun:336 新城@筑波大学情報です。こんにちは。 In article <3993872news.pl@rananim.ie.u-ryukyu.ac.jp> kono@ie.u-ryukyu.ac.jp (Shinji KONO) writes: > > dtrace で動的リンク・ライブラリ等も表示されるのかと思ったの > > ですが、出てきません。MacOSX/Darwin で Mach-O executable を > > 読込むにしても、namei() は呼ばれるだろうに。どうしてかなあ。 > Prebinidng されるからじゃなかったかな。 > ls /var/db/dyld > あたり? 10.4 / 10.5 あたりで変わったし、あまり知らないんですが。 Prebinidng について調べて見ました。今回はあまり関係なさそう。 dtrace で調べていた ls ですか、次のようにして otool で調べて も PREBOUND が出てきません。 ------------------------------------------------------------ % otool -h -v /bin/ls /bin/ls: Mach header magic cputype cpusubtype caps filetype ncmds sizeofcmds flags MH_MAGIC I386 ALL 0x00 EXECUTE 14 1304 NOUNDEFS DYLDLINK TWOLEVEL % ------------------------------------------------------------ 10.3 だと、PREBOUND 出ますね。 ------------------------------------------------------------ % otool -h -v /bin/ls /bin/ls: Mach header magic cputype cpusubtype filetype ncmds sizeofcmds flags MH_MAGIC PPC ALL EXECUTE 15 1912 NOUNDEFS DYLDLINK PREBOUND TWOLEVEL % ------------------------------------------------------------ Prebind に関して参考にしたページはこれです。 http://developer.apple.com/documentation/performance/Conceptual/LaunchTime/Articles/Prebinding.html dtruss だと /lib のファイルは stat だけして終りですね。open も何もしてない。dtruss では表示されないシステムコールを 使っているのかもしれません。 ------------------------------------------------------------ % dtruss /bin/ls /|& egrep / stat("/usr/lib/dtrace/libdtrace_dyld.dylib\0", 0xBFFFD028, 0xBFFFDEBC) = 0 0 open("/usr/lib/dtrace/libdtrace_dyld.dylib\0", 0x0, 0x0) = 3 0 stat("/usr/lib/libncurses.5.4.dylib\0", 0xBFFFCE18, 0xFFFFFFFFBFFFB694) = 0 0 stat("/usr/lib/libgcc_s.1.dylib\0", 0xBFFFCE18, 0xFFFFFFFFBFFFB694) = 0 0 stat("/usr/lib/libSystem.B.dylib\0", 0xBFFFCE18, 0xFFFFFFFFBFFFB694) = 0 0 stat("/usr/lib/system/libmathCommon.A.dylib\0", 0xBFFFCB68, 0xFFFFFFFFBFFFB694) = 0 0 open("/dev/dtracehelper\0", 0x2, 0xBFFFDE44) = 3 0 open_nocancel("/dev/urandom\0", 0x0, 0x0) = 3 0 stat64("/\0", 0xBFFFED64, 0x3) = 0 0 open_nocancel("/\0", 0x100004, 0x0) = 4 0 % ------------------------------------------------------------ それにしても、stat でも namei() には掛かって欲しいのだけれど、 出てこないのは問題だなあ。もっと上の層でキャッシュにかかって いるのかな。 \\ 新城 靖 (しんじょう やすし) \\ \\ 筑波大学 電子・情報       \\