include/linux/debug_locks.h
Source file repositories/reference/linux-study-clean/include/linux/debug_locks.h
File Facts
- System
- Linux kernel
- Corpus path
include/linux/debug_locks.h- Extension
.h- Size
- 1606 bytes
- Lines
- 76
- Domain
- Core OS
- Bucket
- Core Kernel Interface
- Inferred role
- Core OS: implementation source
- Status
- source implementation candidate
Why This File Exists
Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/atomic.hlinux/cache.h
Detected Declarations
struct task_structfunction __debug_locks_offfunction debug_show_all_locks
Annotated Snippet
#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
Annotation
- Immediate include surface: `linux/atomic.h`, `linux/cache.h`.
- Detected declarations: `struct task_struct`, `function __debug_locks_off`, `function debug_show_all_locks`.
- Atlas domain: Core OS / Core Kernel Interface.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.