FreeBSDを理解するためにソースコードを読んでいますsysctl
。
最も重要な機能のようです
int __sysctl(const int *name, u_int namelen, void *oldp, size_t *oldlenp, const void *newp, size_t newlen);
で定義されていませんlib/libc/gen/sysctl.c
。
FreeBSDソースコードをgrepingしようとしましたが、見つかりませんでした__sysctl
。
どこで定義されていますか?
ベストアンサー1
私が学んだ内容は次のとおりです。
__syscall
C ソースファイルには定義されていません。マーク・プロットニックによると:
libc
コンパイル中に生成された__sysctl
数行のアセンブリ言語で書かれたシステムコールラッパー。libc
1]。- システムコールのエントリポイントは次のとおりです。kern_sysctl.cから[2]。システムコールは
sys_foo()
カーネルから呼び出されます。
リンク
edje、Ed Schouten(@ EdSchouten)、@ FreeBSDHelp、そしてMark Plotnickに感謝します。