Rev 1323 | Rev 1702 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1323 | Rev 1667 | ||
---|---|---|---|
Line 67... | Line 67... | ||
67 | * possible occurence of deadlock. |
67 | * possible occurence of deadlock. |
68 | * |
68 | * |
69 | * @param sl Pointer to spinlock_t structure. |
69 | * @param sl Pointer to spinlock_t structure. |
70 | */ |
70 | */ |
71 | #ifdef CONFIG_DEBUG_SPINLOCK |
71 | #ifdef CONFIG_DEBUG_SPINLOCK |
- | 72 | #define DEADLOCK_THRESHOLD 100000000 |
|
72 | void spinlock_lock_debug(spinlock_t *sl) |
73 | void spinlock_lock_debug(spinlock_t *sl) |
73 | { |
74 | { |
74 | count_t i = 0; |
75 | count_t i = 0; |
75 | char *symbol; |
76 | char *symbol; |
76 | bool deadlock_reported = false; |
77 | bool deadlock_reported = false; |
Line 99... | Line 100... | ||
99 | continue; |
100 | continue; |
100 | #ifdef CONFIG_FB |
101 | #ifdef CONFIG_FB |
101 | if (sl == &fb_lock) |
102 | if (sl == &fb_lock) |
102 | continue; |
103 | continue; |
103 | #endif |
104 | #endif |
104 | if (i++ > 10000000) { |
105 | if (i++ > DEADLOCK_THRESHOLD) { |
105 | printf("cpu%d: looping on spinlock %.*p:%s, caller=%.*p", |
106 | printf("cpu%d: looping on spinlock %.*p:%s, caller=%.*p", |
106 | CPU->id, sizeof(__address) * 2, sl, sl->name, sizeof(__address) * 2, CALLER); |
107 | CPU->id, sizeof(__address) * 2, sl, sl->name, sizeof(__address) * 2, CALLER); |
107 | symbol = get_symtab_entry(CALLER); |
108 | symbol = get_symtab_entry(CALLER); |
108 | if (symbol) |
109 | if (symbol) |
109 | printf("(%s)", symbol); |
110 | printf("(%s)", symbol); |