Randy Howardの回答に基づいて、このXNU ソース コードを調べました。このファイルには、すべてのシステムコールのリストが含まれています。そのファイルには、次のような署名が記述されています。syscalls.master
psynch_cvwait
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)
dtruss
これは、質問で引用されている出力とあまり似ていないようです。ただし、実際の実装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 ソース コード全体を grep しても、他の数字も含まれていないものは見つかりませんでした。エラー コードは、それ自体の実装では確かに言及されていませんpsynch_cvwait
が、その実装は、それが呼び出す他の関数からエラー コードを転送します。それを解きほぐし、その値の実際のソースを追跡するには、カーネルデバッガーが本当に必要です。
全体として、出力を理解するための非常に小さな一歩になりましdtruss
たが、多くの作業が必要です。そのため、適切な参照ドキュメントと、そのエラー コードのソースに関する洞察は、依然として非常に高く評価されます。