*参照元 [#t3dce733] #backlinks *説明 [#f35ecccd] -パス: 複数あり [[linux-2.6.33/lib/spinlock_debug.c]] [[linux-2.6.33/include/linux/rwlock.h]] -FIXME: これは何? --説明 **引数 [#c7ca607b] -rwlock_t *lock --ロックを試みる rwlock --[[linux-2.6.33/rwlock_t]] **返り値 [#c7c3a93d] -int --ロックに成功したら 0 以外、失敗したら 0 **参考 [#n6d6a506] *実装 [#o9ce0f3a] **lib/spinlock_debug.c [#n292fca4] int do_raw_read_trylock(rwlock_t *lock) { int ret = arch_read_trylock(&lock->raw_lock); - --[[linux-2.6.33/arch_read_trylock()]] #ifndef CONFIG_SMP -SMP 無効の場合 --[[linux-2.6.33/CONFIG_SMP]] /* * Must not happen on UP: */ RWLOCK_BUG_ON(!ret, lock, "trylock failure on UP"); - --[[linux-2.6.33/RWLOCK_BUG_ON()]] #endif return ret; } **include/linux/rwlock.h [#cc71eb7e] #ifdef CONFIG_DEBUG_SPINLOCK -スピンロックのデバッグが有効の場合 --[[linux-2.6.33/CONFIG_DEBUG_SPINLOCK]] --lib/spinlock_debug.c の実装を見てください。 (略) extern int do_raw_read_trylock(rwlock_t *lock); (略) #else -スピンロックのデバッグが無効の場合 (略) # define do_raw_read_trylock(rwlock) arch_read_trylock(&(rwlock)->raw_lock) - -arch_read_trylock と同じ。 --[[linux-2.6.33/arch_read_trylock()]] (略) #endif *コメント [#q24a52a2]