28,6 → 28,17 |
#define MAX_LOCKDEP_SUBCLASSES 8UL |
|
/* |
* NR_LOCKDEP_CACHING_CLASSES ... Number of classes |
* cached in the instance of lockdep_map |
* |
* Currently main class (subclass == 0) and signle depth subclass |
* are cached in lockdep_map. This optimization is mainly targeting |
* on rq->lock. double_rq_lock() acquires this highly competitive with |
* single depth. |
*/ |
#define NR_LOCKDEP_CACHING_CLASSES 2 |
|
/* |
* Lock-classes are keyed via unique addresses, by embedding the |
* lockclass-key into the kernel (or module) .data section. (For |
* static locks we use the lock address itself as the key.) |
132,7 → 143,7 |
*/ |
struct lockdep_map { |
struct lock_class_key *key; |
struct lock_class *class_cache; |
struct lock_class *class_cache[NR_LOCKDEP_CACHING_CLASSES]; |
const char *name; |
#ifdef CONFIG_LOCK_STAT |
int cpu; |
266,6 → 277,9 |
#define lockdep_set_subclass(lock, sub) \ |
lockdep_init_map(&(lock)->dep_map, #lock, \ |
(lock)->dep_map.key, sub) |
|
#define lockdep_set_novalidate_class(lock) \ |
lockdep_set_class(lock, &__lockdep_no_validate__) |
/* |
* Compare locking classes |
*/ |
350,6 → 364,9 |
#define lockdep_set_class_and_subclass(lock, key, sub) \ |
do { (void)(key); } 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 |
* case since the result is not well defined and the caller should rather |
412,14 → 429,6 |
|
#endif /* CONFIG_LOCKDEP */ |
|
#ifdef CONFIG_GENERIC_HARDIRQS |
extern void early_init_irq_lock_class(void); |
#else |
static inline void early_init_irq_lock_class(void) |
{ |
} |
#endif |
|
#ifdef CONFIG_TRACE_IRQFLAGS |
extern void early_boot_irqs_off(void); |
extern void early_boot_irqs_on(void); |
534,4 → 543,8 |
# define might_lock_read(lock) do { } while (0) |
#endif |
|
#ifdef CONFIG_PROVE_RCU |
extern void lockdep_rcu_dereference(const char *file, const int line); |
#endif |
|
#endif /* __LINUX_LOCKDEP_H */ |