|
@@ -44,6 +44,8 @@ struct lock_class_key {
|
|
struct lockdep_subclass_key subkeys[MAX_LOCKDEP_SUBCLASSES];
|
|
struct lockdep_subclass_key subkeys[MAX_LOCKDEP_SUBCLASSES];
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+extern struct lock_class_key __lockdep_no_validate__;
|
|
|
|
+
|
|
#define LOCKSTAT_POINTS 4
|
|
#define LOCKSTAT_POINTS 4
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -270,6 +272,9 @@ 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)
|
|
|
|
+
|
|
|
|
+#define lockdep_set_novalidate_class(lock) \
|
|
|
|
+ lockdep_set_class(lock, &__lockdep_no_validate__)
|
|
/*
|
|
/*
|
|
* Compare locking classes
|
|
* Compare locking classes
|
|
*/
|
|
*/
|
|
@@ -354,6 +359,9 @@ 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)
|
|
|
|
+
|
|
|
|
+#define lockdep_set_novalidate_class(lock) do { } while (0)
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* We don't define lockdep_match_class() and lockdep_match_key() for !LOCKDEP
|
|
* 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
|
|
* case since the result is not well defined and the caller should rather
|