an answerによってRandy Howardに基づいて、私はXNU source codeを見ました。ファイルsyscalls.master
には、すべてのシステムコールのリストがあります。質問に引用されdtruss
出力と多くの類似点を持っているように見えていません
uint32_t
psynch_cvwait(
user_addr_t cv,
uint64_t cvlsgen,
uint32_t cvugen,
user_addr_t mutex,
uint64_t mugen,
uint32_t flags,
int64_t sec,
uint32_t nsec)
:このファイルは、このようなpsynch_cvwait
の署名を記述する。 pthread_support.c
での実際の実装は、しかし、より有用である:
/*
* psynch_cvwait: This system call is used for psynch cvar waiters to block in kernel.
*/
int
psynch_cvwait(__unused proc_t p,
struct psynch_cvwait_args * uap,
uint32_t * retval)
これは、少なくともdtruss
によって印刷された引数が何であるかにとアイデアを提供します。 2番目のものが構造体であるかのように見え、そのメンバーはsyscalls.master
ファイルで記述されます。したがって、住所はほとんど使用されず、実際のメンバーは明らかにdtrussによって印刷されません。 dtruss
を調整すると、おそらくその構造のメンバーを得ることは可能かもしれませんが、私はこのアカウントでははっきりしていません。
私はそれほど意味がありません。Err#316
の出力と結びついています。 316の10進表記と16進表記の両方のXNUソースコード全体をグロッピングしても、他の桁も含まれていないことはわかりませんでした。エラーコードは確かにpsynch_cvwait
の実装で言及されていませんが、その実装はそれが呼び出す他の関数からエラーコードを転送します。カーネルデバッガが本当に必要なので、それを解き、その値の実際のソースをトレースする必要があります。
私は全体的にはdtruss
の出力を理解するための非常に小さな一歩ですが、多くの作業があります。したがって、適切な参照ドキュメントと、そのエラーコードのソースに対する洞察は、依然として非常に高く評価されます。
出典
2013-04-22 13:57:25
MvG
なぜランディの答えが削除されたのか:それは外部リンクよりも少しだけで構成される回答であることが示されました。リンクのみの回答は一般的には尋ねられ、通常質問された質問には関連していませんが、これは関連性がありました。私は結果としてそれを元に戻しました。 –
あなたはこれについて進歩したことをうれしく思っています。すぐにこの文書を書くのに最適かもしれないように思えます。私の答えが主にリンクされている理由は、元の質問が特に彼を助けるかもしれない文書を探していたからです。私が提供しようとしていたのは、怒っているかどうかではありません。 –