NOTE(RWLOCK_COVERS_LOCKS(RwlockName, LockNameList))
この注釈は、関数定義の外側でも内側でも使用可能で、読み取り書き込みロックとその他のロックのセット間に階層関係が存在することをロック lint に伝えます。こうしたルールの下では、書き込みアクセス用のカバーロックを保持することで、そのカバーされたロックによって保護されるすべてのデータに対するスレッドアクセスを提供します。また、何らかのカバーされたロックを保持する場合、スレッドは読み取りアクセス用のカバーロックを必ず保持しなければなりません。
このように読み取り書き込みロックを使ってほかのロックをカバーする方法は、単に規則の 1 つです。つまり、特殊なロックの種類ではありません。しかし、ロック lint がこうしたカバーリング関係について知らされていないと、ロックは通常の表記方法に従って使用されるとみなしてしまい、その結果、エラーを生成します。
以下の例では、名前未定の foo 構造のメンバー lock が、名前未定の構造 bar と zot のメンバー lock をカバーしています。
NOTE(RWLOCK_COVERS_LOCKS(foo::lock, {bar zot}::lock))