linux/kernel/locking/mutex.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * Mutexes: blocking mutual exclusion locks
   4 *
   5 * started by Ingo Molnar:
   6 *
   7 *  Copyright (C) 2004, 2005, 2006 Red Hat, Inc., Ingo Molnar <mingo@redhat.com>
   8 */
   9
  10/*
  11 * This is the control structure for tasks blocked on mutex, which resides
  12 * on the blocked task's kernel stack:
  13 */
  14struct mutex_waiter {
  15        struct list_head        list;
  16        struct task_struct      *task;
  17        struct ww_acquire_ctx   *ww_ctx;
  18#ifdef CONFIG_DEBUG_MUTEXES
  19        void                    *magic;
  20#endif
  21};
  22
  23#ifdef CONFIG_DEBUG_MUTEXES
  24extern void debug_mutex_lock_common(struct mutex *lock,
  25                                    struct mutex_waiter *waiter);
  26extern void debug_mutex_wake_waiter(struct mutex *lock,
  27                                    struct mutex_waiter *waiter);
  28extern void debug_mutex_free_waiter(struct mutex_waiter *waiter);
  29extern void debug_mutex_add_waiter(struct mutex *lock,
  30                                   struct mutex_waiter *waiter,
  31                                   struct task_struct *task);
  32extern void debug_mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter,
  33                                      struct task_struct *task);
  34extern void debug_mutex_unlock(struct mutex *lock);
  35extern void debug_mutex_init(struct mutex *lock, const char *name,
  36                             struct lock_class_key *key);
  37#else /* CONFIG_DEBUG_MUTEXES */
  38# define debug_mutex_lock_common(lock, waiter)          do { } while (0)
  39# define debug_mutex_wake_waiter(lock, waiter)          do { } while (0)
  40# define debug_mutex_free_waiter(waiter)                do { } while (0)
  41# define debug_mutex_add_waiter(lock, waiter, ti)       do { } while (0)
  42# define debug_mutex_remove_waiter(lock, waiter, ti)    do { } while (0)
  43# define debug_mutex_unlock(lock)                       do { } while (0)
  44# define debug_mutex_init(lock, name, key)              do { } while (0)
  45#endif /* !CONFIG_DEBUG_MUTEXES */
  46