linux/include/linux/debug_locks.h
<<
>>
Prefs
   1#ifndef __LINUX_DEBUG_LOCKING_H
   2#define __LINUX_DEBUG_LOCKING_H
   3
   4struct task_struct;
   5
   6extern int debug_locks;
   7extern int debug_locks_silent;
   8
   9/*
  10 * Generic 'turn off all lock debugging' function:
  11 */
  12extern int debug_locks_off(void);
  13
  14/*
  15 * In the debug case we carry the caller's instruction pointer into
  16 * other functions, but we dont want the function argument overhead
  17 * in the nondebug case - hence these macros:
  18 */
  19#define _RET_IP_                (unsigned long)__builtin_return_address(0)
  20#define _THIS_IP_  ({ __label__ __here; __here: (unsigned long)&&__here; })
  21
  22#define DEBUG_LOCKS_WARN_ON(c)                                          \
  23({                                                                      \
  24        int __ret = 0;                                                  \
  25                                                                        \
  26        if (unlikely(c)) {                                              \
  27                if (debug_locks_off() && !debug_locks_silent)           \
  28                        WARN_ON(1);                                     \
  29                __ret = 1;                                              \
  30        }                                                               \
  31        __ret;                                                          \
  32})
  33
  34#ifdef CONFIG_SMP
  35# define SMP_DEBUG_LOCKS_WARN_ON(c)                     DEBUG_LOCKS_WARN_ON(c)
  36#else
  37# define SMP_DEBUG_LOCKS_WARN_ON(c)                     do { } while (0)
  38#endif
  39
  40#ifdef CONFIG_DEBUG_LOCKING_API_SELFTESTS
  41  extern void locking_selftest(void);
  42#else
  43# define locking_selftest()     do { } while (0)
  44#endif
  45
  46struct task_struct;
  47
  48#ifdef CONFIG_LOCKDEP
  49extern void debug_show_all_locks(void);
  50extern void __debug_show_held_locks(struct task_struct *task);
  51extern void debug_show_held_locks(struct task_struct *task);
  52extern void debug_check_no_locks_freed(const void *from, unsigned long len);
  53extern void debug_check_no_locks_held(struct task_struct *task);
  54#else
  55static inline void debug_show_all_locks(void)
  56{
  57}
  58
  59static inline void __debug_show_held_locks(struct task_struct *task)
  60{
  61}
  62
  63static inline void debug_show_held_locks(struct task_struct *task)
  64{
  65}
  66
  67static inline void
  68debug_check_no_locks_freed(const void *from, unsigned long len)
  69{
  70}
  71
  72static inline void
  73debug_check_no_locks_held(struct task_struct *task)
  74{
  75}
  76#endif
  77
  78#endif
  79
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.