Lines Matching refs:ref
59 static inline void file_ref_init(file_ref_t *ref, unsigned long cnt) in file_ref_init() argument
61 atomic_long_set(&ref->refcnt, cnt - 1); in file_ref_init()
64 bool __file_ref_put(file_ref_t *ref, unsigned long cnt);
78 static __always_inline __must_check bool file_ref_get(file_ref_t *ref) in file_ref_get() argument
108 return !atomic_long_add_negative(1, &ref->refcnt); in file_ref_get()
118 static __always_inline void file_ref_inc(file_ref_t *ref) in file_ref_inc() argument
120 long prior = atomic_long_fetch_inc_relaxed(&ref->refcnt); in file_ref_inc()
139 static __always_inline __must_check bool file_ref_put(file_ref_t *ref) in file_ref_put() argument
157 cnt = atomic_long_dec_return(&ref->refcnt); in file_ref_put()
160 return __file_ref_put(ref, cnt); in file_ref_put()
178 static __always_inline __must_check bool file_ref_put_close(file_ref_t *ref) in file_ref_put_close() argument
182 old = atomic_long_read(&ref->refcnt); in file_ref_put_close()
184 if (likely(atomic_long_try_cmpxchg(&ref->refcnt, &old, FILE_REF_DEAD))) in file_ref_put_close()
187 return file_ref_put(ref); in file_ref_put_close()
196 static inline unsigned long file_ref_read(file_ref_t *ref) in file_ref_read() argument
198 unsigned long c = atomic_long_read(&ref->refcnt); in file_ref_read()
213 static inline unsigned long __file_ref_read_raw(file_ref_t *ref) in __file_ref_read_raw() argument
215 return atomic_long_read(&ref->refcnt); in __file_ref_read_raw()