*参照元 [#u0e9614e]
#backlinks

*説明 [#k5e0ccd1]
-パス: [[linux-2.6.33/arch/x86/include/asm/spinlock.h]]

-FIXME: arch_read_trylock() の x86 版です。


**引数 [#sf8940fb]
-arch_rwlock_t *lock
--ロックを試みる rwlock
--[[linux-2.6.33/arch_rwlock_t]]


**返り値 [#qf0a2cd6]
-int
--ロックに成功したら 0 以外、失敗したら 0


**参考 [#v48e2e8f]


*実装 [#qca2293a]
 static inline int arch_read_trylock(arch_rwlock_t *lock)
 {
         atomic_t *count = (atomic_t *)lock;
 
-arch_rwlock_t と atomic_t は宣言が違うが、
サイズが同じなので、キャストしている??
--[[linux-2.6.33/atomic_t]]

         if (atomic_dec_return(count) >= 0)
                 return 1;
-アトミックに 1減らしてみて、0以上だったらロックできている、成功を返す。
--[[linux-2.6.33/atomic_dec_return()]]

         atomic_inc(count);
-だめだったら 1増やす(つまり元に戻す)、失敗を返す。
--[[linux-2.6.33/atomic_inc()]]

         return 0;
 }


*コメント [#xd0bb015]


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS