#ifndef __LINUX_MUTEX_DEBUG_H #define __LINUX_MUTEX_DEBUG_H #include #include #include /* * Mutexes - debugging helpers: */ #define __DEBUG_MUTEX_INITIALIZER(lockname) \ , .magic = &lockname \ , .owner_info = { \ .pid = NULL, \ .ip = 0, \ } \ , .owner_lock = __SPIN_LOCK_UNLOCKED(lockname.owner_lock) #define mutex_init(mutex) \ do { \ static struct lock_class_key __key; \ \ __mutex_init((mutex), #mutex, &__key); \ } while (0) extern void mutex_destroy(struct mutex *lock); extern int debug_mutex_task_blocked_by(struct task_struct *blocking_task, struct callerinfo *owner_info); extern void show_blocking_mutex_holder(struct task_struct *task); #endif