Re: [RFC][PATCH 1/3] locking/mutex: Rework mutex::owner

From: Waiman Long
Date: Tue Aug 23 2016 - 16:53:10 EST


On 08/23/2016 08:46 AM, Peter Zijlstra wrote:
/*
* Simple, straightforward mutexes with strict semantics:
@@ -48,13 +49,9 @@
* locks and tasks (and only those tasks)
*/
struct mutex {
- /* 1: unlocked, 0: locked, negative: locked, possible waiters */
- atomic_t count;
+ atomic_long_t owner;
spinlock_t wait_lock;
struct list_head wait_list;
-#if defined(CONFIG_DEBUG_MUTEXES) || defined(CONFIG_MUTEX_SPIN_ON_OWNER)
- struct task_struct *owner;
-#endif
#ifdef CONFIG_MUTEX_SPIN_ON_OWNER
struct optimistic_spin_queue osq; /* Spinner MCS lock */
#endif

I think you should put the wait_lock and osq next to each other to save 8 bytes in space on 64-bit machines.

Cheers,
Longman