diff options
Diffstat (limited to 'kernel/lockdep_internals.h')
-rw-r--r-- | kernel/lockdep_internals.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/kernel/lockdep_internals.h b/kernel/lockdep_internals.h new file mode 100644 index 000000000000..0d355f24fe04 --- /dev/null +++ b/kernel/lockdep_internals.h | |||
@@ -0,0 +1,78 @@ | |||
1 | /* | ||
2 | * kernel/lockdep_internals.h | ||
3 | * | ||
4 | * Runtime locking correctness validator | ||
5 | * | ||
6 | * lockdep subsystem internal functions and variables. | ||
7 | */ | ||
8 | |||
9 | /* | ||
10 | * MAX_LOCKDEP_ENTRIES is the maximum number of lock dependencies | ||
11 | * we track. | ||
12 | * | ||
13 | * We use the per-lock dependency maps in two ways: we grow it by adding | ||
14 | * every to-be-taken lock to all currently held lock's own dependency | ||
15 | * table (if it's not there yet), and we check it for lock order | ||
16 | * conflicts and deadlocks. | ||
17 | */ | ||
18 | #define MAX_LOCKDEP_ENTRIES 8192UL | ||
19 | |||
20 | #define MAX_LOCKDEP_KEYS_BITS 11 | ||
21 | #define MAX_LOCKDEP_KEYS (1UL << MAX_LOCKDEP_KEYS_BITS) | ||
22 | |||
23 | #define MAX_LOCKDEP_CHAINS_BITS 13 | ||
24 | #define MAX_LOCKDEP_CHAINS (1UL << MAX_LOCKDEP_CHAINS_BITS) | ||
25 | |||
26 | /* | ||
27 | * Stack-trace: tightly packed array of stack backtrace | ||
28 | * addresses. Protected by the hash_lock. | ||
29 | */ | ||
30 | #define MAX_STACK_TRACE_ENTRIES 131072UL | ||
31 | |||
32 | extern struct list_head all_lock_classes; | ||
33 | |||
34 | extern void | ||
35 | get_usage_chars(struct lock_class *class, char *c1, char *c2, char *c3, char *c4); | ||
36 | |||
37 | extern const char * __get_key_name(struct lockdep_subclass_key *key, char *str); | ||
38 | |||
39 | extern unsigned long nr_lock_classes; | ||
40 | extern unsigned long nr_list_entries; | ||
41 | extern unsigned long nr_lock_chains; | ||
42 | extern unsigned long nr_stack_trace_entries; | ||
43 | |||
44 | extern unsigned int nr_hardirq_chains; | ||
45 | extern unsigned int nr_softirq_chains; | ||
46 | extern unsigned int nr_process_chains; | ||
47 | extern unsigned int max_lockdep_depth; | ||
48 | extern unsigned int max_recursion_depth; | ||
49 | |||
50 | #ifdef CONFIG_DEBUG_LOCKDEP | ||
51 | /* | ||
52 | * Various lockdep statistics: | ||
53 | */ | ||
54 | extern atomic_t chain_lookup_hits; | ||
55 | extern atomic_t chain_lookup_misses; | ||
56 | extern atomic_t hardirqs_on_events; | ||
57 | extern atomic_t hardirqs_off_events; | ||
58 | extern atomic_t redundant_hardirqs_on; | ||
59 | extern atomic_t redundant_hardirqs_off; | ||
60 | extern atomic_t softirqs_on_events; | ||
61 | extern atomic_t softirqs_off_events; | ||
62 | extern atomic_t redundant_softirqs_on; | ||
63 | extern atomic_t redundant_softirqs_off; | ||
64 | extern atomic_t nr_unused_locks; | ||
65 | extern atomic_t nr_cyclic_checks; | ||
66 | extern atomic_t nr_cyclic_check_recursions; | ||
67 | extern atomic_t nr_find_usage_forwards_checks; | ||
68 | extern atomic_t nr_find_usage_forwards_recursions; | ||
69 | extern atomic_t nr_find_usage_backwards_checks; | ||
70 | extern atomic_t nr_find_usage_backwards_recursions; | ||
71 | # define debug_atomic_inc(ptr) atomic_inc(ptr) | ||
72 | # define debug_atomic_dec(ptr) atomic_dec(ptr) | ||
73 | # define debug_atomic_read(ptr) atomic_read(ptr) | ||
74 | #else | ||
75 | # define debug_atomic_inc(ptr) do { } while (0) | ||
76 | # define debug_atomic_dec(ptr) do { } while (0) | ||
77 | # define debug_atomic_read(ptr) 0 | ||
78 | #endif | ||