mutex_owned

指定したカーネル相互排他ロックをスレッドが保持しているかどうかを確認します。

int mutex_owned(vmlinux`struct mutex *)

mutex_owned関数は、コール元のスレッドが指定されたカーネル相互排他ロックを所有している場合はゼロ以外の値を返し、そうでない場合はゼロを返します。

例7-28 mutex_ownedを使用してコール側スレッドがmutexを保持しているかどうかを確認する方法

fbt::mutex_lock:entry
{
        this->mutex = arg0;
}

fbt::mutex_lock:return
{
        this->owned = mutex_owned((struct mutex *)this->mutex);
}

fbt::mutex_lock:return
/!this->owned/
{
        printf("mutex_owned() returned 0, expected non-zero\n");
        exit(1);
}