日本語 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
MTX_POOL(9) FreeBSD カーネル開発者マニュアル MTX_POOL(9) 名称 mtx_pool, mtx_pool_alloc, mtx_pool_find, mtx_pool_lock, mtx_pool_lock_spin, mtx_pool_unlock, mtx_pool_unlock_spin, mtx_pool_create, mtx_pool_destroy -- ミューテックスプールルーチン 書式 #include <sys/param.h> #include <sys/lock.h> #include <sys/mutex.h> struct mtx * mtx_pool_alloc(struct mtx_pool *pool); struct mtx * mtx_pool_find(struct mtx_pool *pool, void *ptr); void mtx_pool_lock(struct mtx_pool *pool, void *ptr); void mtx_pool_lock_spin(struct mtx_pool *pool, void *ptr); void mtx_pool_unlock(struct mtx_pool *pool, void *ptr); void mtx_pool_unlock_spin(struct mtx_pool *pool, void *ptr); struct mtx_pool * mtx_pool_create(const char *mtx_name, int pool_size, int opts); void mtx_pool_destroy(struct mtx_pool **poolp); 解説 ミューテックスプールは短期リーフのミューテックスとして使用されるように設 計されています。すなわち、最後のミューテックスの一つは mtx_sleep(9) を呼 び出す前に取得するかもしれません。それらは、ミューテックスの共有された プールを使用して動作します。ミューテックスは、有効なものを指すかどうか分 からない、供給されたポインタに基づくプールから選ばれるか、または、呼び出 し側は、プールから任意の共有されたミューテックスを割り付けて、後の使用の ために返されたミューテックスポインタを保存します。 デフォルトで作成される mtxpool_sleep ミューテックスプール中の共有された ミューテックスは、標準で、非再帰的で、ブロック可能なミューテックスで、お よび適切な状況でのみ使用されるべきです。mtxpool_lockbuilder ミューテック スプール中のミューテックスは、それらが、より高いレベルロックを構築するた めに使用することができるように MTX_NOWITNESS フラグで初期化されることを除 いて、同様です。他のミューテックスプールは、スピンミューテックスのような 異なった特性があるミューテックスを含むように作成されます。 呼び出し側はプールルーチンによって返されたミューテックスをロックして、ア ンロックすることができますが、ミューテックスが共有されているので、呼び出 し側は、それらを破壊するか、またはそれらの特性を変更することを試みるべき ではありません。プールミューテックスが通常リーフミューテックス (それを得 た後にどのような順序付けられた保証に依存することができないことを意味して) であるのだが、それはまだ慎重に制御された状況の下で他のミューテックスを取 得することができます。特に、それがプライベートミューテックス (呼び出し側 によって割り付けられ、初期化されたもの) があるなら、それは順序付けられた 問題が慎重に説明されるならプールミューテックスを得た後に、それを獲得する ことができます。これらの場合では、プライベートミューテックスは結局、本当 のリーフミューテックスとなります。wind up = 結局〜する結果となる、結局〜 する羽目になる、結局〜の羽目に遭わせる、 プールミューテックスには、次の利点があります: 1. 構造的なオーバヘッドはありません。すなわち、それらは、過剰に追 加することなしに、構造体に関連づけることができます。 2. ミューテックスは、インタロックデストラクタ操作のためのミュー テックスを使用するとき役に立つ、無効のポインタに取得することが できます。 3. 初期化またはデストラクションのオーバヘッドはありません。 4. mtx_sleep(9) で使用することができます。 そして、次の不利点があります: 1. 一般的に、リーフミューテックスとしてのみ使用されるべきです。 2. プール/プール依存順序は保証することができません。 3. CPU 間の可能な L1 キャッシュマスタ権限競合。 mtx_pool_alloc() は指定されたプールから共有されたミューテックスを取得しま す。このルーチンは、mtx_pool サブシステムによって管理された共有された ミューテックスの 1 つを選ぶために簡単なローバ (検索機) を使用します。 mtx_pool_find() は指定されたアドレスに関連している共有されたミューテック スを返します。このルーチンは、それに渡されたポインタのハッシュを作成し て、そのハッシュに基づく指定されたプールから共有されたミューテックスを選 択します。ポインタはなにか本当のものを指す必要はありません。 mtx_pool_lock(), mtx_pool_lock_spin(), mtx_pool_unlock(), と mtx_pool_unlock_spin() は指定されたアドレスに関連している指定されたプール から共有されたミューテックスをロックして、アンロックします。それらはそれ ぞれ mtx_pool_find() と mtx_lock(9), mtx_lock_spin(9), mtx_unlock(9) と mtx_unlock_spin(9) の組み合わせです。これらのルーチンが最初に操作する ミューテックスを見つけなければならないので、それらは、mtx_pool_find() ま たは mtx_pool_alloc() の以前の呼び出しによって返されたミューテックスポイ ンタを直接使用するより速くありません。 mtx_pool_create() は指定されたサイズの新しいミューテックスプールを割り付 けて初期化します。プールサイズは 2 の冪乗でなければなりません。opts 引数 は、プール中の各ミューテックスのためのオプションを設定するために mtx_init(9) に渡されます。 mtx_pool_destroy() は、指定されたプールの各ミューテックスで mtx_destroy(9) を呼び出し、プールに関連づけられたメモリの割り付け解放、お よびプールポインタに NULL を代入することを行います。 関連項目 locking(9), mutex(9) 歴史 これらのルーチンは、FreeBSD 5.0 ではじめて登場しました。 FreeBSD 11.4 February 6, 2010 FreeBSD 11.4