History

locking: Move the mutex code to kernel/locking/

Peter Zijlstra committed 13 years ago

Commit 01768b41 parent c90423d6 files · +11 −4Browse files

Showing the changes to kernel/locking/mutex-debug.h (1 of 6 files). Show all

Unified · Split

kernel/locking/mutex-debug.h+55−0
@@ -0,0 +1,55 @@
1+/*
2+ * Mutexes: blocking mutual exclusion locks
3+ *
4+ * started by Ingo Molnar:
5+ *
6+ * Copyright (C) 2004, 2005, 2006 Red Hat, Inc., Ingo Molnar <mingo@redhat.com>
7+ *
8+ * This file contains mutex debugging related internal declarations,
9+ * prototypes and inline functions, for the CONFIG_DEBUG_MUTEXES case.
10+ * More details are in kernel/mutex-debug.c.
11+ */
12+
13+/*
14+ * This must be called with lock->wait_lock held.
15+ */
16+extern void debug_mutex_lock_common(struct mutex *lock,
17+ struct mutex_waiter *waiter);
18+extern void debug_mutex_wake_waiter(struct mutex *lock,
19+ struct mutex_waiter *waiter);
20+extern void debug_mutex_free_waiter(struct mutex_waiter *waiter);
21+extern void debug_mutex_add_waiter(struct mutex *lock,
22+ struct mutex_waiter *waiter,
23+ struct thread_info *ti);
24+extern void mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter,
25+ struct thread_info *ti);
26+extern void debug_mutex_unlock(struct mutex *lock);
27+extern void debug_mutex_init(struct mutex *lock, const char *name,
28+ struct lock_class_key *key);
29+
30+static inline void mutex_set_owner(struct mutex *lock)
31+{
32+ lock->owner = current;
33+}
34+
35+static inline void mutex_clear_owner(struct mutex *lock)
36+{
37+ lock->owner = NULL;
38+}
39+
40+#define spin_lock_mutex(lock, flags) \
41+ do { \
42+ struct mutex *l = container_of(lock, struct mutex, wait_lock); \
43+ \
44+ DEBUG_LOCKS_WARN_ON(in_interrupt()); \
45+ local_irq_save(flags); \
46+ arch_spin_lock(&(lock)->rlock.raw_lock);\
47+ DEBUG_LOCKS_WARN_ON(l->magic != l); \
48+ } while (0)
49+
50+#define spin_unlock_mutex(lock, flags) \
51+ do { \
52+ arch_spin_unlock(&(lock)->rlock.raw_lock); \
53+ local_irq_restore(flags); \
54+ preempt_check_resched(); \
55+ } while (0)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t