X-Git-Url: https://git.stricted.de/?p=GitHub%2Fmt8127%2Fandroid_kernel_alcatel_ttab.git;a=blobdiff_plain;f=kernel%2Fmutex.c;h=d77807b1ed3e15fd1ca9282a3c9aa08ba112286e;hp=ad53a664f113b7036fc9abed4d7d73f0be5b2479;hb=HEAD;hpb=e6eea1536e077b2b7bfc8c173f09d01ef72d2c7b diff --git a/kernel/mutex.c b/kernel/mutex.c index ad53a664f113..d77807b1ed3e 100644 --- a/kernel/mutex.c +++ b/kernel/mutex.c @@ -32,6 +32,12 @@ #ifdef CONFIG_DEBUG_MUTEXES # include "mutex-debug.h" # include + +# ifndef CONFIG_LOCKDEP +# define CREATE_TRACE_POINTS +# endif +# include + #else # include "mutex.h" # include @@ -264,6 +270,9 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass, struct task_struct *task = current; struct mutex_waiter waiter; unsigned long flags; +#ifdef CONFIG_DEBUG_MUTEXES + unsigned char __mutex_contended = 0; +#endif preempt_disable(); mutex_acquire_nest(&lock->dep_map, subclass, 0, nest_lock, ip); @@ -351,6 +360,10 @@ slowpath: goto done; lock_contended(&lock->dep_map, ip); +#ifdef CONFIG_DEBUG_MUTEXES + trace_mutex_contended(lock, ip); + __mutex_contended = 1; // to pair mutex_contended & mutex_acquired +#endif for (;;) { /* @@ -389,6 +402,10 @@ slowpath: } done: +#ifdef CONFIG_DEBUG_MUTEXES + if(unlikely(__mutex_contended > 0)) + trace_mutex_acquired(lock, ip); +#endif lock_acquired(&lock->dep_map, ip); /* got the lock - rejoice! */ mutex_remove_waiter(lock, &waiter, current_thread_info());