Contributors: 15
Author Tokens Token Proportion Commits Commit Proportion
Ingo Molnar 134 69.43% 5 16.13%
Linus Torvalds (pre-git) 19 9.84% 9 29.03%
Frédéric Weisbecker 12 6.22% 1 3.23%
Andrew Morton 7 3.63% 4 12.90%
David Woodhouse 3 1.55% 1 3.23%
Alexey Dobriyan 3 1.55% 1 3.23%
Colin Cross 2 1.04% 1 3.23%
Eduard - Gabriel Munteanu 2 1.04% 1 3.23%
Waiman Long 2 1.04% 1 3.23%
Peter Zijlstra 2 1.04% 2 6.45%
Len Brown 2 1.04% 1 3.23%
Keith Owens 2 1.04% 1 3.23%
Greg Kroah-Hartman 1 0.52% 1 3.23%
Sebastian Andrzej Siewior 1 0.52% 1 3.23%
Andy Shevchenko 1 0.52% 1 3.23%
Total 193 31


/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_DEBUG_LOCKING_H
#define __LINUX_DEBUG_LOCKING_H

#include <linux/atomic.h>
#include <linux/cache.h>

struct task_struct;

extern int debug_locks __read_mostly;
extern int debug_locks_silent __read_mostly;


static __always_inline int __debug_locks_off(void)
{
	return xchg(&debug_locks, 0);
}

/*
 * Generic 'turn off all lock debugging' function:
 */
extern int debug_locks_off(void);

#define DEBUG_LOCKS_WARN_ON(c)						\
({									\
	int __ret = 0;							\
									\
	if (!oops_in_progress && unlikely(c)) {				\
		instrumentation_begin();				\
		if (debug_locks_off() && !debug_locks_silent)		\
			WARN(1, "DEBUG_LOCKS_WARN_ON(%s)", #c);		\
		instrumentation_end();					\
		__ret = 1;						\
	}								\
	__ret;								\
})

#ifdef CONFIG_SMP
# define SMP_DEBUG_LOCKS_WARN_ON(c)			DEBUG_LOCKS_WARN_ON(c)
#else
# define SMP_DEBUG_LOCKS_WARN_ON(c)			do { } while (0)
#endif

#ifdef CONFIG_DEBUG_LOCKING_API_SELFTESTS
  extern void locking_selftest(void);
#else
# define locking_selftest()	do { } while (0)
#endif

#ifdef CONFIG_LOCKDEP
extern void debug_show_all_locks(void);
extern void debug_show_held_locks(struct task_struct *task);
extern void debug_check_no_locks_freed(const void *from, unsigned long len);
extern void debug_check_no_locks_held(void);
#else
static inline void debug_show_all_locks(void)
{
}

static inline void debug_show_held_locks(struct task_struct *task)
{
}

static inline void
debug_check_no_locks_freed(const void *from, unsigned long len)
{
}

static inline void
debug_check_no_locks_held(void)
{
}
#endif

#endif