diff options
author | Huang, Ying <ying.huang@intel.com> | 2008-06-20 04:39:21 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-06-20 06:21:33 -0400 |
commit | 443cd507ce7f78c6f8742b72736585c031d5a921 (patch) | |
tree | 256182911b08287661beca1f90455b14cd0b9151 /kernel/lockdep_internals.h | |
parent | 2429e4ee78e2fa40f82a4572dd21d4f3b4de9325 (diff) |
lockdep: add lock_class information to lock_chain and output it
This patch records array of lock_class into lock_chain, and export
lock_chain information via /proc/lockdep_chains.
It is based on x86/master branch of git-x86 tree, and has been tested
on x86_64 platform.
Signed-off-by: Huang Ying <ying.huang@intel.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/lockdep_internals.h')
-rw-r--r-- | kernel/lockdep_internals.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/kernel/lockdep_internals.h b/kernel/lockdep_internals.h index 8ce09bc4613d..db09b176dd34 100644 --- a/kernel/lockdep_internals.h +++ b/kernel/lockdep_internals.h | |||
@@ -23,6 +23,8 @@ | |||
23 | #define MAX_LOCKDEP_CHAINS_BITS 14 | 23 | #define MAX_LOCKDEP_CHAINS_BITS 14 |
24 | #define MAX_LOCKDEP_CHAINS (1UL << MAX_LOCKDEP_CHAINS_BITS) | 24 | #define MAX_LOCKDEP_CHAINS (1UL << MAX_LOCKDEP_CHAINS_BITS) |
25 | 25 | ||
26 | #define MAX_LOCKDEP_CHAIN_HLOCKS (MAX_LOCKDEP_CHAINS*5) | ||
27 | |||
26 | /* | 28 | /* |
27 | * Stack-trace: tightly packed array of stack backtrace | 29 | * Stack-trace: tightly packed array of stack backtrace |
28 | * addresses. Protected by the hash_lock. | 30 | * addresses. Protected by the hash_lock. |
@@ -30,15 +32,19 @@ | |||
30 | #define MAX_STACK_TRACE_ENTRIES 262144UL | 32 | #define MAX_STACK_TRACE_ENTRIES 262144UL |
31 | 33 | ||
32 | extern struct list_head all_lock_classes; | 34 | extern struct list_head all_lock_classes; |
35 | extern struct lock_chain lock_chains[]; | ||
33 | 36 | ||
34 | extern void | 37 | extern void |
35 | get_usage_chars(struct lock_class *class, char *c1, char *c2, char *c3, char *c4); | 38 | get_usage_chars(struct lock_class *class, char *c1, char *c2, char *c3, char *c4); |
36 | 39 | ||
37 | extern const char * __get_key_name(struct lockdep_subclass_key *key, char *str); | 40 | extern const char * __get_key_name(struct lockdep_subclass_key *key, char *str); |
38 | 41 | ||
42 | struct lock_class *lock_chain_get_class(struct lock_chain *chain, int i); | ||
43 | |||
39 | extern unsigned long nr_lock_classes; | 44 | extern unsigned long nr_lock_classes; |
40 | extern unsigned long nr_list_entries; | 45 | extern unsigned long nr_list_entries; |
41 | extern unsigned long nr_lock_chains; | 46 | extern unsigned long nr_lock_chains; |
47 | extern atomic_t nr_chain_hlocks; | ||
42 | extern unsigned long nr_stack_trace_entries; | 48 | extern unsigned long nr_stack_trace_entries; |
43 | 49 | ||
44 | extern unsigned int nr_hardirq_chains; | 50 | extern unsigned int nr_hardirq_chains; |