Skip to content

Commit

Permalink
locking/spinlocks/mcs: Introduce and use init macro and function for …
Browse files Browse the repository at this point in the history
…osq locks

Currently, we initialize the osq lock by directly setting the lock's values. It
would be preferable if we use an init macro to do the initialization like we do
with other locks.

This patch introduces and uses a macro and function for initializing the osq lock.

Signed-off-by: Jason Low <jason.low2@hp.com>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Cc: Scott Norton <scott.norton@hp.com>
Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Cc: Dave Chinner <david@fromorbit.com>
Cc: Waiman Long <waiman.long@hp.com>
Cc: Davidlohr Bueso <davidlohr@hp.com>
Cc: Rik van Riel <riel@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Tim Chen <tim.c.chen@linux.intel.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Aswin Chandramouleeswaran <aswin@hp.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Chris Mason <clm@fb.com>
Cc: Josef Bacik <jbacik@fusionio.com>
Link: http://lkml.kernel.org/r/1405358872-3732-4-git-send-email-jason.low2@hp.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
  • Loading branch information
Jason Low authored and Ingo Molnar committed Jul 16, 2014
1 parent 9063182 commit 4d9d951
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 3 deletions.
8 changes: 8 additions & 0 deletions include/linux/osq_lock.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,12 @@ struct optimistic_spin_queue {
atomic_t tail;
};

/* Init macro and function. */
#define OSQ_LOCK_UNLOCKED { ATOMIC_INIT(OSQ_UNLOCKED_VAL) }

static inline void osq_lock_init(struct optimistic_spin_queue *lock)
{
atomic_set(&lock->tail, OSQ_UNLOCKED_VAL);
}

#endif
2 changes: 1 addition & 1 deletion include/linux/rwsem.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ static inline int rwsem_is_locked(struct rw_semaphore *sem)
__RAW_SPIN_LOCK_UNLOCKED(name.wait_lock), \
LIST_HEAD_INIT((name).wait_list), \
NULL, /* owner */ \
{ ATOMIC_INIT(OSQ_UNLOCKED_VAL) } /* osq */ \
OSQ_LOCK_UNLOCKED /* osq */ \
__RWSEM_DEP_MAP_INIT(name) }
#else
#define __RWSEM_INITIALIZER(name) \
Expand Down
2 changes: 1 addition & 1 deletion kernel/locking/mutex.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ __mutex_init(struct mutex *lock, const char *name, struct lock_class_key *key)
INIT_LIST_HEAD(&lock->wait_list);
mutex_clear_owner(lock);
#ifdef CONFIG_MUTEX_SPIN_ON_OWNER
atomic_set(&lock->osq.tail, OSQ_UNLOCKED_VAL);
osq_lock_init(&lock->osq);
#endif

debug_mutex_init(lock, name, key);
Expand Down
2 changes: 1 addition & 1 deletion kernel/locking/rwsem-xadd.c
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ void __init_rwsem(struct rw_semaphore *sem, const char *name,
INIT_LIST_HEAD(&sem->wait_list);
#ifdef CONFIG_SMP
sem->owner = NULL;
atomic_set(&sem->osq.tail, OSQ_UNLOCKED_VAL);
osq_lock_init(&sem->osq);
#endif
}

Expand Down

0 comments on commit 4d9d951

Please sign in to comment.