rw_read_held
指定した読取り/書込みロックを読取り側が保持しているかどうかを確認します。
int rw_read_held(vmlinux`rwlock_t *rwlock)
指定されたリーダー・ライター・ロック(rwlock)がリーダーによって保持されている場合、rw_read_held関数はゼロ以外を返します。 ロックが書込み側のみで保持されている場合やまったく保持されていない場合、rw_read_heldはゼロを返します。
例8-41 rw_iswriterを使用して、ライターが指定したリーダー・ライター・ロックを保持しているか待機しているかを確認する方法
この例では、2つの節が含まれています。 最初の節は、_raw_read_lockの入力時にトリガーされ、rw_read_held関数を使用してロックが保持されているかどうかを表示します。 この段階ではロックが保持されないため、出力は0を返します。 _raw_read_lockが戻るとロックが保持され、rw_read_held関数は1を返します。
fbt:vmlinux:_raw_read_lock:entry
{
self->rlock = (rwlock_t *)arg0;
printf("read entry %x\n", 0 != rw_read_held(self->rlock));
}
fbt:vmlinux:_raw_read_lock:return
/self->rlock/
{
printf("read return %x\n", 0 != rw_read_held(self->rlock));
exit(0);
}