drivers: power: report battery voltage in AOSP compatible format
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / kernel / mutex-debug.h
CommitLineData
408894ee
IM
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
408894ee
IM
13/*
14 * This must be called with lock->wait_lock held.
15 */
9a11b49a
IM
16extern void debug_mutex_lock_common(struct mutex *lock,
17 struct mutex_waiter *waiter);
408894ee
IM
18extern void debug_mutex_wake_waiter(struct mutex *lock,
19 struct mutex_waiter *waiter);
20extern void debug_mutex_free_waiter(struct mutex_waiter *waiter);
21extern void debug_mutex_add_waiter(struct mutex *lock,
22 struct mutex_waiter *waiter,
9a11b49a 23 struct thread_info *ti);
408894ee
IM
24extern void mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter,
25 struct thread_info *ti);
26extern void debug_mutex_unlock(struct mutex *lock);
9a11b49a
IM
27extern void debug_mutex_init(struct mutex *lock, const char *name,
28 struct lock_class_key *key);
408894ee 29
0d66bf6d
PZ
30static inline void mutex_set_owner(struct mutex *lock)
31{
c6eb3dda 32 lock->owner = current;
0d66bf6d
PZ
33}
34
35static inline void mutex_clear_owner(struct mutex *lock)
36{
37 lock->owner = NULL;
38}
6fa3eb70
S
39#include <linux/aee.h>
40#define MT_DEBUG_LOCKS_WARN_ON(c) \
41({ \
42 int __ret = 0; \
43 \
44 if (!oops_in_progress && unlikely(c)) { \
45 aee_kernel_warning(#c,"Mutex Debug\n");\
46 if (debug_locks_off() && !debug_locks_silent) \
47 WARN_ON(1); \
48 else \
49 dump_stack();\
50 __ret = 1; \
51 } \
52 __ret; \
53})
54
55#ifdef DEBUG_LOCKS_WARN_ON
56#undef DEBUG_LOCKS_WARN_ON
57#define DEBUG_LOCKS_WARN_ON(c) MT_DEBUG_LOCKS_WARN_ON(c)
58#endif
0d66bf6d 59
1fb00c6c 60#define spin_lock_mutex(lock, flags) \
408894ee
IM
61 do { \
62 struct mutex *l = container_of(lock, struct mutex, wait_lock); \
63 \
6fa3eb70
S
64 if(DEBUG_LOCKS_WARN_ON(in_interrupt())){ \
65 printk("[MUTEX WARN!!] mutex lock in interrupt context!\n");\
66 }\
9a11b49a 67 local_irq_save(flags); \
c2f21ce2 68 arch_spin_lock(&(lock)->rlock.raw_lock);\
9e7f4d45 69 DEBUG_LOCKS_WARN_ON(l->magic != l); \
408894ee
IM
70 } while (0)
71
c2f21ce2
TG
72#define spin_unlock_mutex(lock, flags) \
73 do { \
74 arch_spin_unlock(&(lock)->rlock.raw_lock); \
75 local_irq_restore(flags); \
76 preempt_check_resched(); \
408894ee 77 } while (0)