Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c6eb3dda authored by Peter Zijlstra's avatar Peter Zijlstra Committed by Ingo Molnar
Browse files

mutex: Use p->on_cpu for the adaptive spin



Since we now have p->on_cpu unconditionally available, use it to
re-implement mutex_spin_on_owner.

Requested-by: default avatarThomas Gleixner <tglx@linutronix.de>
Reviewed-by: default avatarFrank Rowand <frank.rowand@am.sony.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Nick Piggin <npiggin@kernel.dk>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20110405152728.826338173@chello.nl
parent 3ca7a440
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ struct mutex {
	spinlock_t		wait_lock;
	struct list_head	wait_list;
#if defined(CONFIG_DEBUG_MUTEXES) || defined(CONFIG_SMP)
	struct thread_info	*owner;
	struct task_struct	*owner;
#endif
#ifdef CONFIG_DEBUG_MUTEXES
	const char 		*name;
+1 −1
Original line number Diff line number Diff line
@@ -360,7 +360,7 @@ extern signed long schedule_timeout_interruptible(signed long timeout);
extern signed long schedule_timeout_killable(signed long timeout);
extern signed long schedule_timeout_uninterruptible(signed long timeout);
asmlinkage void schedule(void);
extern int mutex_spin_on_owner(struct mutex *lock, struct thread_info *owner);
extern int mutex_spin_on_owner(struct mutex *lock, struct task_struct *owner);

struct nsproxy;
struct user_namespace;
+1 −1
Original line number Diff line number Diff line
@@ -75,7 +75,7 @@ void debug_mutex_unlock(struct mutex *lock)
		return;

	DEBUG_LOCKS_WARN_ON(lock->magic != lock);
	DEBUG_LOCKS_WARN_ON(lock->owner != current_thread_info());
	DEBUG_LOCKS_WARN_ON(lock->owner != current);
	DEBUG_LOCKS_WARN_ON(!lock->wait_list.prev && !lock->wait_list.next);
	mutex_clear_owner(lock);
}
+1 −1
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ extern void debug_mutex_init(struct mutex *lock, const char *name,

static inline void mutex_set_owner(struct mutex *lock)
{
	lock->owner = current_thread_info();
	lock->owner = current;
}

static inline void mutex_clear_owner(struct mutex *lock)
+1 −1
Original line number Diff line number Diff line
@@ -160,7 +160,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
	 */

	for (;;) {
		struct thread_info *owner;
		struct task_struct *owner;

		/*
		 * If we own the BKL, then don't spin. The owner of
Loading