Re: Sun DTrace namei()
新城@筑波大学情報です。こんにちは。
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() には掛かって欲しいのだけれど、
出てこないのは問題だなあ。もっと上の層でキャッシュにかかって
いるのかな。
\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報 \\
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