日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
SYSCTL_ADD_OID(9) FreeBSD カーネル開発者マニュアル SYSCTL_ADD_OID(9) 名称 sysctl_add_oid, sysctl_move_oid, sysctl_remove_oid, sysctl_remove_name -- 実行時 sysctl ツリー操作 書式 #include <sys/types.h> #include <sys/sysctl.h> struct sysctl_oid * sysctl_add_oid(struct sysctl_ctx_list *ctx, struct sysctl_oid_list *parent, int number, const char *name, int kind, void *arg1, intmax_t arg2, int (*handler) (SYSCTL_HANDLER_ARGS), const char *format, const char *descr, const char *label); int sysctl_move_oid(struct sysctl_oid *oidp, struct sysctl_oid_list *parent); int sysctl_remove_oid(struct sysctl_oid *oidp, int del, int recurse); int sysctl_remove_name(struct sysctl_oid *oidp, const char *name, int del, int recurse); 解説 これらの関数は、例えば、モジュールの存続期間の間に、実行時に sysctl OID を作成し削除するためにインタフェースを提供しています。sysctl(9) によって 定義されたラッパマクロは、新しい OID を作成するとき、推奨されます。 sysctl_add_oid() コードから直接呼び出されるべきではありません。 タイプ CTLTYPE_NODE の動的な OID は、いくつかのコードセクションが、それら を作成してい削除することができるように、再使用可能ですが、実際には、それ らは、リファレンスカウントに基づいて、割り付けられ、解放されます。結果と して、それらが両方とも使用する、2 つ以上のコードセクションに対して部分的 にオーバラップするツリーを作成することは、可能です。オーバラップする葉を 作成することも、同じ名前と親で異なる子どもタイプを作成することも不可能で す。 sysctl_add_oid() 関数は、もしあるなら、あらゆるタイプの生の OID を作成 し、その親のノードにそれを接続します。OID が成功して作成されるなら、関数 は、それへのポインタを返し、そうでなければ、NULL を返します。 sysctl_add_oid() のための多くの引数は、sysctl(9) によって定義されたラッパ マクロに共通です。 sysctl_move_oid() 関数は、既存の OID を再び親とします。あたかも OID_AUTO に設定された number で作成されたかのように、OID は、新しい番号に割り当て られます。 sysctl_remove_oid() 関数は、オプションでそのリソースを解放して、ツリーか ら動的に作成された OID を削除します。それは、次の引数を取ります: oidp 削除される動的な OID へのポインタ。OID が動的でないか、またはポ インタが NULL であるなら、関数は、EINVAL を返します。 del 0 でないなら、sysctl_remove_oid() は、OID のリファレンスカウント が 0 になるとき、OID のリソースを解放しようと試みます。しかしな がら、del が 0 に設定されるなら、ルーチンは、その資源を解放せず に、単にツリーから OID の登録を取り消します。この振る舞いは、呼 び出し側が後で、多くの OID のロールバックの (おそらく部分的に失 敗した) 削除を期待するとき、役に立ちます。 recurse 0 でないなら、ノードとそのすべての子どもを削除することを試みま す。recurse が 0 に設定されるなら、あらゆる子どもを含むノードを 削除する試みは、ENOTEMPTY エラーの結果となります。警告: "細心の 注意を払って再帰的な削除を使用してください" ! 通常、それは、コ ンテキストが使用されるなら、必要とされるべきではありません。コン テキストは、ツリーのユーザ間の相互の依存性を追跡することを処理し ます。しかしながら、いくつかの極端な場合に、それが他のいくつかの リソースを解放するために、それがどのように作成されたとしても、サ ブツリーの一部を削除することが必要かもしれません。しかしながら、 他のコードセクションが削除されたサブツリーを使用し続けるなら、こ れは、システム panic(9) の結果となるかもしれないことに注意してく ださい。 sysctl_remove_name() 関数は、name 引数と一致する子ノードを検索して、次 に、del と recurse 引数を通過していって、そのノードで sysctl_remove_oid() 関数を呼び出します。指定された名前があるノードが存在しないなら、ENOENT の エラーコードが返されます。そうでないなら、sysctl_remove_oid() からのエ ラーコードが返されます。 ほとんどの場合、プログラマは、作成された OID の経過を追い、規則的な方法で 後にそれらを削除するために sysctl_ctx_init(9) に記述されているように、コ ンテキストを使用するべきです。 関連項目 sysctl(8), sysctl(9), sysctl_ctx_free(9), sysctl_ctx_init(9) 歴史 これらの関数は、FreeBSD 4.2 ではじめて登場しました。 作者 Andrzej Bialecki <abial@FreeBSD.org> バグ 多くのコードセクションの間のノードを共有することは、時々リソースをロック する相互依存を引き起こします。例えば、モジュール A がモジュール B によっ て作成された OID へのサブツリーを取り付けるなら、モジュール B は、その OID を削除することができません。これらの問題は、sysctl コンテキストによっ て適切に扱われます。 ツリーでの多くの操作は、リンクされたリストを横断することを含んでいます。 このために、OID 生成と削除は、比較的コストが高くなります。 FreeBSD 13.2 December 13, 2016 FreeBSD 13.2