Lines Matching refs:lock

45  * Every lock has a list of other locks that were taken after it.
61 * bit 0 is reused to indicate if the lock has been accessed in BFS.
67 * struct lock_chain - lock dependency chain record
72 * @entry: the collided lock chains in lock_chain hash list
90 extern void lockdep_reset_lock(struct lockdep_map *lock);
128 extern void lockdep_init_map_type(struct lockdep_map *lock, const char *name,
132 lockdep_init_map_waits(struct lockdep_map *lock, const char *name,
135 lockdep_init_map_type(lock, name, key, subclass, inner, outer, LD_LOCK_NORMAL);
139 lockdep_init_map_wait(struct lockdep_map *lock, const char *name,
142 lockdep_init_map_waits(lock, name, key, subclass, inner, LD_WAIT_INV);
145 static inline void lockdep_init_map(struct lockdep_map *lock, const char *name,
148 lockdep_init_map_wait(lock, name, key, subclass, LD_WAIT_INV);
152 * Reinitialize a lock key - for cases where there is special locking or
157 #define lockdep_set_class(lock, key) \
158 lockdep_init_map_type(&(lock)->dep_map, #key, key, 0, \
159 (lock)->dep_map.wait_type_inner, \
160 (lock)->dep_map.wait_type_outer, \
161 (lock)->dep_map.lock_type)
163 #define lockdep_set_class_and_name(lock, key, name) \
164 lockdep_init_map_type(&(lock)->dep_map, name, key, 0, \
165 (lock)->dep_map.wait_type_inner, \
166 (lock)->dep_map.wait_type_outer, \
167 (lock)->dep_map.lock_type)
169 #define lockdep_set_class_and_subclass(lock, key, sub) \
170 lockdep_init_map_type(&(lock)->dep_map, #key, key, sub, \
171 (lock)->dep_map.wait_type_inner, \
172 (lock)->dep_map.wait_type_outer, \
173 (lock)->dep_map.lock_type)
175 #define lockdep_set_subclass(lock, sub) \
176 lockdep_init_map_type(&(lock)->dep_map, #lock, (lock)->dep_map.key, sub,\
177 (lock)->dep_map.wait_type_inner, \
178 (lock)->dep_map.wait_type_outer, \
179 (lock)->dep_map.lock_type)
181 #define lockdep_set_novalidate_class(lock) \
182 lockdep_set_class_and_name(lock, &__lockdep_no_validate__, #lock)
187 #define lockdep_match_class(lock, key) lockdep_match_key(&(lock)->dep_map, key)
189 static inline int lockdep_match_key(struct lockdep_map *lock,
192 return lock->key == key;
196 * Acquire a lock.
209 extern void lock_acquire(struct lockdep_map *lock, unsigned int subclass,
213 extern void lock_release(struct lockdep_map *lock, unsigned long ip);
215 extern void lock_sync(struct lockdep_map *lock, unsigned int subclass,
227 extern int lock_is_held_type(const struct lockdep_map *lock, int read);
229 static inline int lock_is_held(const struct lockdep_map *lock)
231 return lock_is_held_type(lock, -1);
234 #define lockdep_is_held(lock) lock_is_held(&(lock)->dep_map)
235 #define lockdep_is_held_type(lock, r) lock_is_held_type(&(lock)->dep_map, (r))
237 extern void lock_set_class(struct lockdep_map *lock, const char *name,
244 static inline void lock_set_subclass(struct lockdep_map *lock,
247 lock_set_class(lock, lock->name, lock->key, subclass, ip);
250 extern void lock_downgrade(struct lockdep_map *lock, unsigned long ip);
254 extern struct pin_cookie lock_pin_lock(struct lockdep_map *lock);
255 extern void lock_repin_lock(struct lockdep_map *lock, struct pin_cookie);
256 extern void lock_unpin_lock(struct lockdep_map *lock, struct pin_cookie);
325 # define lockdep_init_map_type(lock, name, key, sub, inner, outer, type) \
327 # define lockdep_init_map_waits(lock, name, key, sub, inner, outer) \
329 # define lockdep_init_map_wait(lock, name, key, sub, inner) \
331 # define lockdep_init_map(lock, name, key, sub) \
333 # define lockdep_set_class(lock, key) do { (void)(key); } while (0)
334 # define lockdep_set_class_and_name(lock, key, name) \
336 #define lockdep_set_class_and_subclass(lock, key, sub) \
338 #define lockdep_set_subclass(lock, sub) do { } while (0)
340 #define lockdep_set_novalidate_class(lock) do { } while (0)
396 #define lock_set_cmp_fn(lock, ...) lockdep_set_lock_cmp_fn(&(lock)->dep_map, __VA_ARGS__)
398 #define lock_set_cmp_fn(lock, ...) do { } while (0)
419 extern void lock_contended(struct lockdep_map *lock, unsigned long ip);
420 extern void lock_acquired(struct lockdep_map *lock, unsigned long ip);
422 #define LOCK_CONTENDED(_lock, try, lock) \
426 lock(_lock); \
431 #define LOCK_CONTENDED_RETURN(_lock, try, lock) \
436 ____err = lock(_lock); \
448 #define LOCK_CONTENDED(_lock, try, lock) \
449 lock(_lock)
451 #define LOCK_CONTENDED_RETURN(_lock, try, lock) \
452 lock(_lock)
479 * For trivial one-depth nesting of a lock-class, the following
481 * of nesting should define their own lock-nesting subclasses.)
487 * on the per lock-class debug mode:
530 # define might_lock(lock) \
532 typecheck(struct lockdep_map *, &(lock)->dep_map); \
533 lock_acquire(&(lock)->dep_map, 0, 0, 0, 1, NULL, _THIS_IP_); \
534 lock_release(&(lock)->dep_map, _THIS_IP_); \
536 # define might_lock_read(lock) \
538 typecheck(struct lockdep_map *, &(lock)->dep_map); \
539 lock_acquire(&(lock)->dep_map, 0, 0, 1, 1, NULL, _THIS_IP_); \
540 lock_release(&(lock)->dep_map, _THIS_IP_); \
542 # define might_lock_nested(lock, subclass) \
544 typecheck(struct lockdep_map *, &(lock)->dep_map); \
545 lock_acquire(&(lock)->dep_map, subclass, 0, 1, 1, NULL, \
547 lock_release(&(lock)->dep_map, _THIS_IP_); \
604 # define might_lock(lock) do { } while (0)
605 # define might_lock_read(lock) do { } while (0)
606 # define might_lock_nested(lock, subclass) do { } while (0)