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 int lockref_get_not_zero(struct lockref *lockref) in lockref_get_not_zero() argument
73 spin_lock(&lockref->lock); in lockref_get_not_zero()
75 if (lockref->count > 0) { in lockref_get_not_zero()
76 lockref->count++; in lockref_get_not_zero()
79 spin_unlock(&lockref->lock); in lockref_get_not_zero()
89 int lockref_put_not_zero(struct lockref *lockref) in lockref_put_not_zero() argument
101 spin_lock(&lockref->lock); in lockref_put_not_zero()
103 if (lockref->count > 1) { in lockref_put_not_zero()
104 lockref->count--; in lockref_put_not_zero()
107 spin_unlock(&lockref->lock); in lockref_put_not_zero()
119 int lockref_put_return(struct lockref *lockref) in lockref_put_return() argument
137 int lockref_put_or_lock(struct lockref *lockref) in lockref_put_or_lock() argument
147 spin_lock(&lockref->lock); in lockref_put_or_lock()
148 if (lockref->count <= 1) in lockref_put_or_lock()
150 lockref->count--; in lockref_put_or_lock()
151 spin_unlock(&lockref->lock); in lockref_put_or_lock()
160 void lockref_mark_dead(struct lockref *lockref) in lockref_mark_dead() argument
162 assert_spin_locked(&lockref->lock); in lockref_mark_dead()
163 lockref->count = -128; in lockref_mark_dead()
172 int lockref_get_not_dead(struct lockref *lockref) in lockref_get_not_dead() argument
184 spin_lock(&lockref->lock); in lockref_get_not_dead()
186 if (lockref->count >= 0) { in lockref_get_not_dead()
187 lockref->count++; in lockref_get_not_dead()
190 spin_unlock(&lockref->lock); in lockref_get_not_dead()