Blame view

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