Lines Matching refs:sem
73 static inline int rwsem_is_locked(struct rw_semaphore *sem) in rwsem_is_locked() argument
75 return atomic_long_read(&sem->count) != RWSEM_UNLOCKED_VALUE; in rwsem_is_locked()
78 static inline void rwsem_assert_held_nolockdep(const struct rw_semaphore *sem) in rwsem_assert_held_nolockdep() argument
80 WARN_ON(atomic_long_read(&sem->count) == RWSEM_UNLOCKED_VALUE); in rwsem_assert_held_nolockdep()
83 static inline void rwsem_assert_held_write_nolockdep(const struct rw_semaphore *sem) in rwsem_assert_held_write_nolockdep() argument
85 WARN_ON(!(atomic_long_read(&sem->count) & RWSEM_WRITER_LOCKED)); in rwsem_assert_held_write_nolockdep()
114 extern void __init_rwsem(struct rw_semaphore *sem, const char *name,
117 #define init_rwsem(sem) \ argument
121 __init_rwsem((sem), #sem, &__key); \
130 static inline int rwsem_is_contended(struct rw_semaphore *sem) in rwsem_is_contended() argument
132 return !list_empty(&sem->wait_list); in rwsem_is_contended()
158 #define init_rwsem(sem) \ argument
162 __init_rwsem((sem), #sem, &__key); \
165 static __always_inline int rwsem_is_locked(const struct rw_semaphore *sem) in rwsem_is_locked() argument
167 return rw_base_is_locked(&sem->rwbase); in rwsem_is_locked()
170 static __always_inline void rwsem_assert_held_nolockdep(const struct rw_semaphore *sem) in rwsem_assert_held_nolockdep() argument
172 WARN_ON(!rwsem_is_locked(sem)); in rwsem_assert_held_nolockdep()
175 static __always_inline void rwsem_assert_held_write_nolockdep(const struct rw_semaphore *sem) in rwsem_assert_held_write_nolockdep() argument
177 WARN_ON(!rw_base_is_write_locked(&sem->rwbase)); in rwsem_assert_held_write_nolockdep()
180 static __always_inline int rwsem_is_contended(struct rw_semaphore *sem) in rwsem_is_contended() argument
182 return rw_base_is_contended(&sem->rwbase); in rwsem_is_contended()
192 static inline void rwsem_assert_held(const struct rw_semaphore *sem) in rwsem_assert_held() argument
195 lockdep_assert_held(sem); in rwsem_assert_held()
197 rwsem_assert_held_nolockdep(sem); in rwsem_assert_held()
200 static inline void rwsem_assert_held_write(const struct rw_semaphore *sem) in rwsem_assert_held_write() argument
203 lockdep_assert_held_write(sem); in rwsem_assert_held_write()
205 rwsem_assert_held_write_nolockdep(sem); in rwsem_assert_held_write()
211 extern void down_read(struct rw_semaphore *sem);
212 extern int __must_check down_read_interruptible(struct rw_semaphore *sem);
213 extern int __must_check down_read_killable(struct rw_semaphore *sem);
218 extern int down_read_trylock(struct rw_semaphore *sem);
223 extern void down_write(struct rw_semaphore *sem);
224 extern int __must_check down_write_killable(struct rw_semaphore *sem);
229 extern int down_write_trylock(struct rw_semaphore *sem);
234 extern void up_read(struct rw_semaphore *sem);
239 extern void up_write(struct rw_semaphore *sem);
251 extern void downgrade_write(struct rw_semaphore *sem);
267 extern void down_read_nested(struct rw_semaphore *sem, int subclass);
268 extern int __must_check down_read_killable_nested(struct rw_semaphore *sem, int subclass);
269 extern void down_write_nested(struct rw_semaphore *sem, int subclass);
270 extern int down_write_killable_nested(struct rw_semaphore *sem, int subclass);
271 extern void _down_write_nest_lock(struct rw_semaphore *sem, struct lockdep_map *nest_lock);
273 # define down_write_nest_lock(sem, nest_lock) \ argument
276 _down_write_nest_lock(sem, &(nest_lock)->dep_map); \
285 extern void down_read_non_owner(struct rw_semaphore *sem);
286 extern void up_read_non_owner(struct rw_semaphore *sem);
288 # define down_read_nested(sem, subclass) down_read(sem) argument
289 # define down_read_killable_nested(sem, subclass) down_read_killable(sem) argument
290 # define down_write_nest_lock(sem, nest_lock) down_write(sem) argument
291 # define down_write_nested(sem, subclass) down_write(sem) argument
292 # define down_write_killable_nested(sem, subclass) down_write_killable(sem) argument
293 # define down_read_non_owner(sem) down_read(sem) argument
294 # define up_read_non_owner(sem) up_read(sem) argument