at v2.6.26 1.5 kB view raw
1#ifndef __LINUX_DEBUG_LOCKING_H 2#define __LINUX_DEBUG_LOCKING_H 3 4#include <linux/kernel.h> 5 6struct task_struct; 7 8extern int debug_locks; 9extern int debug_locks_silent; 10 11/* 12 * Generic 'turn off all lock debugging' function: 13 */ 14extern int debug_locks_off(void); 15 16#define DEBUG_LOCKS_WARN_ON(c) \ 17({ \ 18 int __ret = 0; \ 19 \ 20 if (unlikely(c)) { \ 21 if (debug_locks_off() && !debug_locks_silent) \ 22 WARN_ON(1); \ 23 __ret = 1; \ 24 } \ 25 __ret; \ 26}) 27 28#ifdef CONFIG_SMP 29# define SMP_DEBUG_LOCKS_WARN_ON(c) DEBUG_LOCKS_WARN_ON(c) 30#else 31# define SMP_DEBUG_LOCKS_WARN_ON(c) do { } while (0) 32#endif 33 34#ifdef CONFIG_DEBUG_LOCKING_API_SELFTESTS 35 extern void locking_selftest(void); 36#else 37# define locking_selftest() do { } while (0) 38#endif 39 40struct task_struct; 41 42#ifdef CONFIG_LOCKDEP 43extern void debug_show_all_locks(void); 44extern void __debug_show_held_locks(struct task_struct *task); 45extern void debug_show_held_locks(struct task_struct *task); 46extern void debug_check_no_locks_freed(const void *from, unsigned long len); 47extern void debug_check_no_locks_held(struct task_struct *task); 48#else 49static inline void debug_show_all_locks(void) 50{ 51} 52 53static inline void __debug_show_held_locks(struct task_struct *task) 54{ 55} 56 57static inline void debug_show_held_locks(struct task_struct *task) 58{ 59} 60 61static inline void 62debug_check_no_locks_freed(const void *from, unsigned long len) 63{ 64} 65 66static inline void 67debug_check_no_locks_held(struct task_struct *task) 68{ 69} 70#endif 71 72#endif