rw_read_held

指定した読取り/書込みロックを読取り側が保持しているかどうかを確認します。

int rw_read_held(vmlinux`rwlock_t *rwlock)

rw_read_held関数は、指定された読取り/書込みロック(rwlock)が読取り側によって保持されている場合、ゼロ以外の値を返します。ロックが書込み側のみで保持されている場合やまったく保持されていない場合、rw_read_heldはゼロを返します。

例7-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);
 }