|
@@ -258,6 +258,16 @@ extern void lockdep_init_map(struct lockdep_map *lock, const char *name,
|
|
#define lockdep_set_subclass(lock, sub) \
|
|
#define lockdep_set_subclass(lock, sub) \
|
|
lockdep_init_map(&(lock)->dep_map, #lock, \
|
|
lockdep_init_map(&(lock)->dep_map, #lock, \
|
|
(lock)->dep_map.key, sub)
|
|
(lock)->dep_map.key, sub)
|
|
|
|
+/*
|
|
|
|
+ * Compare locking classes
|
|
|
|
+ */
|
|
|
|
+#define lockdep_match_class(lock, key) lockdep_match_key(&(lock)->dep_map, key)
|
|
|
|
+
|
|
|
|
+static inline int lockdep_match_key(struct lockdep_map *lock,
|
|
|
|
+ struct lock_class_key *key)
|
|
|
|
+{
|
|
|
|
+ return lock->key == key;
|
|
|
|
+}
|
|
|
|
|
|
/*
|
|
/*
|
|
* Acquire a lock.
|
|
* Acquire a lock.
|
|
@@ -326,6 +336,11 @@ static inline void lockdep_on(void)
|
|
#define lockdep_set_class_and_subclass(lock, key, sub) \
|
|
#define lockdep_set_class_and_subclass(lock, key, sub) \
|
|
do { (void)(key); } while (0)
|
|
do { (void)(key); } while (0)
|
|
#define lockdep_set_subclass(lock, sub) do { } while (0)
|
|
#define lockdep_set_subclass(lock, sub) do { } while (0)
|
|
|
|
+/*
|
|
|
|
+ * We don't define lockdep_match_class() and lockdep_match_key() for !LOCKDEP
|
|
|
|
+ * case since the result is not well defined and the caller should rather
|
|
|
|
+ * #ifdef the call himself.
|
|
|
|
+ */
|
|
|
|
|
|
# define INIT_LOCKDEP
|
|
# define INIT_LOCKDEP
|
|
# define lockdep_reset() do { debug_locks = 1; } while (0)
|
|
# define lockdep_reset() do { debug_locks = 1; } while (0)
|