aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/lockdep.c
diff options
context:
space:
mode:
authorMing Lei <tom.leiming@gmail.com>2009-07-16 09:44:29 -0400
committerPeter Zijlstra <a.p.zijlstra@chello.nl>2009-07-24 04:52:03 -0400
commit12f3dfd022d7e616757a94f0538d3d525d806a16 (patch)
tree22221bcfa6edcc47094bd87862eb9cc5402a5799 /kernel/lockdep.c
parent4dd861d6467007681991d8ec079d928db2018cbb (diff)
lockdep: Add statistics info for max bfs queue depth
Add BFS statistics to the existing lockdep stats. Signed-off-by: Ming Lei <tom.leiming@gmail.com> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> LKML-Reference: <1246201486-7308-10-git-send-email-tom.leiming@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/lockdep.c')
-rw-r--r--kernel/lockdep.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/kernel/lockdep.c b/kernel/lockdep.c
index 6358cf7e84b2..744da6265d99 100644
--- a/kernel/lockdep.c
+++ b/kernel/lockdep.c
@@ -929,7 +929,7 @@ static int add_lock_to_list(struct lock_class *class, struct lock_class *this,
929 929
930unsigned long bfs_accessed[BITS_TO_LONGS(MAX_LOCKDEP_ENTRIES)]; 930unsigned long bfs_accessed[BITS_TO_LONGS(MAX_LOCKDEP_ENTRIES)];
931static struct circular_queue lock_cq; 931static struct circular_queue lock_cq;
932 932unsigned int max_bfs_queue_depth;
933static int __bfs(struct lock_list *source_entry, 933static int __bfs(struct lock_list *source_entry,
934 void *data, 934 void *data,
935 int (*match)(struct lock_list *entry, void *data), 935 int (*match)(struct lock_list *entry, void *data),
@@ -975,6 +975,7 @@ static int __bfs(struct lock_list *source_entry,
975 975
976 list_for_each_entry(entry, head, entry) { 976 list_for_each_entry(entry, head, entry) {
977 if (!lock_accessed(entry)) { 977 if (!lock_accessed(entry)) {
978 unsigned int cq_depth;
978 mark_lock_accessed(entry, lock); 979 mark_lock_accessed(entry, lock);
979 if (match(entry, data)) { 980 if (match(entry, data)) {
980 *target_entry = entry; 981 *target_entry = entry;
@@ -986,6 +987,9 @@ static int __bfs(struct lock_list *source_entry,
986 ret = -1; 987 ret = -1;
987 goto exit; 988 goto exit;
988 } 989 }
990 cq_depth = __cq_get_elem_count(cq);
991 if (max_bfs_queue_depth < cq_depth)
992 max_bfs_queue_depth = cq_depth;
989 } 993 }
990 } 994 }
991 } 995 }