FreeBSD 日本語マニュアル検索 (jman/japropos/jwhatis)


日本語 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.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)

13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。



検索コマンド: man apropos whatis
コマンド/キーワード:
日本語マニュアル RELEASE :
セクション:
Table of Contents
名称 | 書式 | 解説 | 関連項目 | 歴史 | 作者 | バグ
RWLOCK(9)              FreeBSD カーネル開発者マニュアル              RWLOCK(9)

名称
     rwlock, rw_init, rw_init_flags, rw_destroy, rw_rlock, rw_wlock,
     rw_runlock, rw_wunlock, rw_unlock, rw_try_rlock, rw_try_upgrade,
     rw_try_wlock, rw_downgrade, rw_sleep, rw_initialized, rw_wowned,
     rw_assert, RW_SYSINIT, RW_SYSINIT_FLAGS -- カーネル読み込み側/書き込み側
     (reader/writer) ロック

書式
     #include <sys/param.h>
     #include <sys/lock.h>
     #include <sys/rwlock.h>

     void
     rw_init(struct rwlock *rw, const char *name);

     void
     rw_init_flags(struct rwlock *rw, const char *name, int opts);

     void
     rw_destroy(struct rwlock *rw);

     void
     rw_rlock(struct rwlock *rw);

     void
     rw_wlock(struct rwlock *rw);

     int
     rw_try_rlock(struct rwlock *rw);

     int
     rw_try_wlock(struct rwlock *rw);

     void
     rw_runlock(struct rwlock *rw);

     void
     rw_wunlock(struct rwlock *rw);

     void
     rw_unlock(struct rwlock *rw);

     int
     rw_try_upgrade(struct rwlock *rw);

     void
     rw_downgrade(struct rwlock *rw);

     int
     rw_sleep(void *chan, struct rwlock *rw, int priority, const char *wmesg,
         int timo);

     int
     rw_initialized(const struct rwlock *rw);

     int
     rw_wowned(const struct rwlock *rw);

     options INVARIANTS
     options INVARIANT_SUPPORT

     void
     rw_assert(const struct rwlock *rw, int what);

     #include <sys/kernel.h>

     RW_SYSINIT(name, struct rwlock *rw, const char *desc);

     RW_SYSINIT_FLAGS(name, struct rwlock *rw, const char *desc, int flags);

解説
     読み込み側/書き込み側 (reader/writer) ロックによって、複数のスレッドに
     よって保護されたデータへの共有アクセスができるか、または単一のスレッドに
     よって排他的なアクセスができます。共有アクセスがあるスレッドは、それらが
     保護されたデータを読み込めるだけであるので、reader として知られています。
     排他的なアクセスがあるスレッドは、保護されたデータを変更することができる
     ので、writer として知られています。

     読み込み側/書き込み側 (reader/writer) ロックは、sx(9) ロックとよく似てい
     るように見えますが、それらの使用法のパターンは異なっています。共有/排他的
     セマンティクスでミューテックス (mutex) (mutex(9) を参照) として、読み込み
     側/書き込み側 (reader/writer) ロックを取りを扱うことができます。sx(9) と
     異なって、非 spin ミューテックスを保持している間に rwlock をロックするこ
     とができ、スリープしている間に、rwlock を保持することはできません。rwlock
     ロックには、ミューテックスのような優先権伝播がありますが、優先権を書き込
     み側のみ伝播することができます。この制限は、読み込み側が匿名であるという
     事実によります。別の重要な特性は、読み込み側が、常に繰り返すことがができ
     ることであり、排他的ロックを選択的に繰り返すことができます。

   マクロと関数
     rw_init(struct rwlock *rw, const char *name)
             名前 name によって説明される、読み込み側/書き込み側
             (reader/writer) ロックとして rw に位置する構造体を初期化します。
             説明は、もっぱらデバッグの目的に使用されます。この関数は、ロック
             において任意の他の操作の前に呼び出されなければなりません。

     rw_init_flags(struct rwlock *rw, const char *name, int opts)
             ちょうど rw_init() 関数のような rw ロックを初期化しますが、opts
             引数を通して、rw の振る舞いを変更するための 1 組のオプションのフ
             ラグの指定します。次のフラグの 1 つ以上を含みます:

             RW_DUPOK      witness (目撃者) は、獲得される複製されたロックに関
                           するメッセージをログ記録するべきではありません。

             RW_NOPROFILE  このロックのプロファイルを行いません。

             RW_NOWITNESS  このロックを無視するように witness(4) に指示しま
                           す。

             RW_QUIET      ktr(4) を通してこのロックのための任意の操作をログ記
                           録しません。

             RW_RECURSE    スレッドは、rw のために排他的なロックを再帰的に獲得
                           できます。

             RW_NEW        カーネルが option INVARIANTS でコンパイルされたな
                           ら、rw_init_flags() は、rw が、このオプションが指定
                           されないなら、介在されている rw_destroy() への呼び
                           出しなしで、何度も初期化されていないことをアサート
                           します。

     rw_rlock(struct rwlock *rw)
             読み込み側 (reader) として rw をロックします。任意のスレッドが排
             他的にこのロックを保持するなら、現在のスレッドは、ブロックし、そ
             の優先権は、排他的な保持者に伝播されます。スレッドが rw で既に読
             み込み側 (reader) アクセスを取得しているとき、rw_rlock() 関数を呼
             び出すことができます。これは、``ロックでの繰り返し'' (recursing
             on a lock) と呼ばれます。

     rw_wlock(struct rwlock *rw)
             書き込み側 (writer) として rw をロックします。ロックの共有された
             所有者がいるなら、現在のスレッドは、ブロックします。RW_RECURSE オ
             プションが有効にされている状態で rw が初期化された場合にだけ、
             rw_wlock() 関数を再帰的に呼び出すことができます。

     rw_try_rlock(struct rwlock *rw)
             読み込み側 (reader) として rw をロックしようとします。この関数
             は、操作が成功するなら、真を返し、そうでなければ、0 を返します。

     rw_try_wlock(struct rwlock *rw)
             書き込み側 (writer) として rw をロックしようとします。この関数
             は、操作が成功するなら、真を返し、そうでなければ、0 を返します。

     rw_runlock(struct rwlock *rw)
             この関数は、以前に rw_rlock() によって獲得された共有されたロック
             を解放します。

     rw_wunlock(struct rwlock *rw)
             この関数は、以前に rw_wlock() によって獲得された排他的なロックを
             解放します。

     rw_unlock(struct rwlock *rw)
             この関数は、以前に rw_rlock() によって獲得された共有ロックか、ま
             たは以前に rw_wlock() によって獲得された排他的なロックを解放しま
             す。

     rw_try_upgrade(struct rwlock *rw)
             単一の共有されたロックを排他的なロックにアップグレードすることを
             試みます。現在のスレッドは、rw の共有されたロックを保持していなけ
             ればなりません。現在のスレッドが rw で共有されたロックのみを保持
             している場合にだけ、これは成功し、単一の共有されたロックのみを保
             持します。試みが成功するなら、rw_try_upgrade() は、0 以外の値を返
             し、現在のスレッドは、排他的なロックを保持します。試みが失敗する
             なら、rw_try_upgrade() は、0 を返し、現在のスレッドは、そのまま共
             有されたロックを保持します。

     rw_downgrade(struct rwlock *rw)
             排他的なロックを単一の共有されたロックに変換します。現在のスレッ
             ドは、rw の排他的なロックを保持していなければなりません。

     rw_sleep(void *chan, struct rwlock *rw, int priority, const char *wmesg,
             int timo)
             イベントを待っている間に、不可分に rw を解放します。この関数への
             パラメータに関するより詳しい情報については、sleep(9) を参照してく
             ださい。

     rw_initialized(const struct rwlock *rw)
             この関数は、rw が初期化されたなら 0 以外を返し、そうでなければ、0
             を返します。

     rw_destroy(struct rwlock *rw)
             この関数は、以前に rw_init() で初期化されたロックを破壊します。rw
             ロックは、アンロックされていなければなりません。

     rw_wowned(const struct rwlock *rw)
             この関数は、現在のスレッドが rw で排他的なロックを所有しているな
             ら、0 以外を返します。

     rw_assert(const struct rwlock *rw, int what)
             この関数によって、what で指定されたアサーションを、rw に関して行
             うことができます。アサーションが真でなく、カーネルが options
             INVARIANTSoptions INVARIANT_SUPPORT でコンパイルされているな
             ら、カーネルは、パニックします。現在、次の基本的なアサーションが
             サポートされています:

             RA_LOCKED    現在のスレッドが rw の共有されるか、または排他的な
                          ロックを保持しているかアサートします。

             RA_RLOCKED   現在のスレッドが、rw の共有されたロックを保持してい
                          るかアサートします。

             RA_WLOCKED   現在のスレッドが、rw の排他的なロックを保持している
                          かアサートします。

             RA_UNLOCKED  現在のスレッドが、rw の共有されたロックも排他的な
                          ロックも保持していないかアサートします。

             さらに、次のオプションのフラグの 1 つは、RA_LOCKED, RA_RLOCKED ま
             たは RA_WLOCKED で指定されます:

             RA_RECURSED     現在のスレッドが、rw の再帰的なロックを保持するこ
                             とをアサートします。

             RA_NOTRECURSED  現在のスレッドが、rw の再帰的なロックを保持しない
                             ことをアサートします。

関連項目
     locking(9), mutex(9), panic(9), sema(9), sx(9)

歴史
     これらの関数は FreeBSD 7.0 で登場しました。

作者
     rwlock 機能は John Baldwin によって書かれました。このマニュアルページは
     Gleb Smirnoff によって書かれました。

バグ
     WITNESS なしのカーネルは、現在のスレッドが、読み込み側 (reader) ロックを
     保持するかどうかにかかわらず、アサートすることができません。RA_LOCKED と
     RA_RLOCKED は、あらゆるスレッドが読み込み側 (reader) ロックを保持すること
     だけアサートすることができます。それらは、現在のスレッドが、読み込み側
     (reader) ロックを保持することを保証することはできません。さらに、
     RA_UNLOCKED は、現在のスレッドが書き込み側ロックを保持しないことだけア
     サートすることができます。

     読み込み側/書き込み側 (reader/writer) は、ちょっとまずい名前です。また、
     お好みで、rwlock は、``Robert Watson'' ロックとも呼ばれます。

FreeBSD 11.2                   November 11, 2017                  FreeBSD 11.2

Table of Contents

FreeBSD マニュアル検索