<function>
<fname>rw_lock_init</fname>
<prototype>

#include        "task.h"

int
rw_lock_init(RW_LOCK * rwl);

</prototype>
<explanation>
<pre>
        rwl             : リードライトロック構造体
</pre>
リードライトロック構造体を初期化する。
</explanation>
<return>

ごみ

</return>
<details>

リードライト構造体は以下の３つの状態を持っている。
<pre>
	アンロック状態
	リードロック状態
	ライトロック状態
</pre>
これに対して、各タスクは、リードロック、ライトロック、アンロックといった三つの操作を施す。リードロック、ライトロックはロックをかける操作。アンロックはロックを外す操作である。ロックをかける操作と、外す操作は数が一致していなければならない。

リードライトロック構造体がアンロック状態のときは、あらゆるロックを受け付け、その操作に対応した状態へ遷移する。

リードライトロック構造体がリードロック状態の時は、ライトロックはかけられない。   ライトロックをかけたタスクは待ち状態に入る。リードロックはいくつもかかる。

ライトロック状態の時は、いずれのロックもかからない。

これで書き込みの一貫性が保証できる。

</details>
</function>