Lines Matching refs:lockref

13 	struct lockref old;							\
15 old.lock_count = READ_ONCE(lockref->lock_count); \
17 struct lockref new = old; \
19 if (likely(try_cmpxchg64_relaxed(&lockref->lock_count, \
42 void lockref_get(struct lockref *lockref) in lockref_get() argument
50 spin_lock(&lockref->lock); in lockref_get()
51 lockref->count++; in lockref_get()
52 spin_unlock(&lockref->lock); in lockref_get()
61 bool lockref_get_not_zero(struct lockref *lockref) in lockref_get_not_zero() argument
73 spin_lock(&lockref->lock); in lockref_get_not_zero()
74 if (lockref->count > 0) { in lockref_get_not_zero()
75 lockref->count++; in lockref_get_not_zero()
78 spin_unlock(&lockref->lock); in lockref_get_not_zero()
90 int lockref_put_return(struct lockref *lockref) in lockref_put_return() argument
108 bool lockref_put_or_lock(struct lockref *lockref) in lockref_put_or_lock() argument
118 spin_lock(&lockref->lock); in lockref_put_or_lock()
119 if (lockref->count <= 1) in lockref_put_or_lock()
121 lockref->count--; in lockref_put_or_lock()
122 spin_unlock(&lockref->lock); in lockref_put_or_lock()
131 void lockref_mark_dead(struct lockref *lockref) in lockref_mark_dead() argument
133 assert_spin_locked(&lockref->lock); in lockref_mark_dead()
134 lockref->count = -128; in lockref_mark_dead()
143 bool lockref_get_not_dead(struct lockref *lockref) in lockref_get_not_dead() argument
155 spin_lock(&lockref->lock); in lockref_get_not_dead()
156 if (lockref->count >= 0) { in lockref_get_not_dead()
157 lockref->count++; in lockref_get_not_dead()
160 spin_unlock(&lockref->lock); in lockref_get_not_dead()