FreeBSDでは、__sysctl関数はどこで定義されていますか?

FreeBSDでは、__sysctl関数はどこで定義されていますか?

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

私が学んだ内容は次のとおりです。

  • __syscallC ソースファイルには定義されていません。

    マーク・プロットニックによると:

    libcコンパイル中に生成された__sysctl数行のアセンブリ言語で書かれたシステムコールラッパー。libc1]。

  • システムコールのエントリポイントは次のとおりです。kern_sysctl.cから[2]。システムコールはsys_foo()カーネルから呼び出されます。

リンク

  1. システムコールの生成に使用される設定ファイルです。
  2. kern_sysctl.c ソースコード。

edje、Ed Schouten(@ EdSchouten)、@ FreeBSDHelp、そしてMark Plotnickに感謝します。

おすすめ記事