diff options
Diffstat (limited to 'include/linux/lockref.h')
-rw-r--r-- | include/linux/lockref.h | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/include/linux/lockref.h b/include/linux/lockref.h index c3a1f78bc884..676721ee878d 100644 --- a/include/linux/lockref.h +++ b/include/linux/lockref.h @@ -34,14 +34,25 @@ struct lockref { }; }; -extern void lockref_get(struct lockref *); -extern int lockref_put_return(struct lockref *); -extern int lockref_get_not_zero(struct lockref *); -extern int lockref_put_not_zero(struct lockref *); -extern int lockref_put_or_lock(struct lockref *); - -extern void lockref_mark_dead(struct lockref *); -extern int lockref_get_not_dead(struct lockref *); +/** + * lockref_init - Initialize a lockref + * @lockref: pointer to lockref structure + * + * Initializes @lockref->count to 1. + */ +static inline void lockref_init(struct lockref *lockref) +{ + spin_lock_init(&lockref->lock); + lockref->count = 1; +} + +void lockref_get(struct lockref *lockref); +int lockref_put_return(struct lockref *lockref); +bool lockref_get_not_zero(struct lockref *lockref); +bool lockref_put_or_lock(struct lockref *lockref); + +void lockref_mark_dead(struct lockref *lockref); +bool lockref_get_not_dead(struct lockref *lockref); /* Must be called under spinlock for reliable results */ static inline bool __lockref_is_dead(const struct lockref *l) |