forked from luck/tmp_suning_uos_patched
locking/spinlocks/mcs: Rename optimistic_spin_queue() to optimistic_spin_node()
Currently, the per-cpu nodes structure for the cancellable MCS spinlock is named "optimistic_spin_queue". However, in a follow up patch in the series we will be introducing a new structure that serves as the new "handle" for the lock. It would make more sense if that structure is named "optimistic_spin_queue". Additionally, since the current use of the "optimistic_spin_queue" structure are "nodes", it might be better if we rename them to "node" anyway. This preparatory patch renames all current "optimistic_spin_queue" to "optimistic_spin_node". 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: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Josef Bacik <jbacik@fusionio.com> Link: http://lkml.kernel.org/r/1405358872-3732-2-git-send-email-jason.low2@hp.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
37e9562453
commit
046a619d8e
|
@ -46,7 +46,7 @@
|
||||||
* - detects multi-task circular deadlocks and prints out all affected
|
* - detects multi-task circular deadlocks and prints out all affected
|
||||||
* locks and tasks (and only those tasks)
|
* locks and tasks (and only those tasks)
|
||||||
*/
|
*/
|
||||||
struct optimistic_spin_queue;
|
struct optimistic_spin_node;
|
||||||
struct mutex {
|
struct mutex {
|
||||||
/* 1: unlocked, 0: locked, negative: locked, possible waiters */
|
/* 1: unlocked, 0: locked, negative: locked, possible waiters */
|
||||||
atomic_t count;
|
atomic_t count;
|
||||||
|
@ -56,7 +56,7 @@ struct mutex {
|
||||||
struct task_struct *owner;
|
struct task_struct *owner;
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_MUTEX_SPIN_ON_OWNER
|
#ifdef CONFIG_MUTEX_SPIN_ON_OWNER
|
||||||
struct optimistic_spin_queue *osq; /* Spinner MCS lock */
|
struct optimistic_spin_node *osq; /* Spinner MCS lock */
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_DEBUG_MUTEXES
|
#ifdef CONFIG_DEBUG_MUTEXES
|
||||||
const char *name;
|
const char *name;
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
#include <linux/atomic.h>
|
#include <linux/atomic.h>
|
||||||
|
|
||||||
struct optimistic_spin_queue;
|
struct optimistic_spin_node;
|
||||||
struct rw_semaphore;
|
struct rw_semaphore;
|
||||||
|
|
||||||
#ifdef CONFIG_RWSEM_GENERIC_SPINLOCK
|
#ifdef CONFIG_RWSEM_GENERIC_SPINLOCK
|
||||||
|
@ -33,7 +33,7 @@ struct rw_semaphore {
|
||||||
* if the owner is running on the cpu.
|
* if the owner is running on the cpu.
|
||||||
*/
|
*/
|
||||||
struct task_struct *owner;
|
struct task_struct *owner;
|
||||||
struct optimistic_spin_queue *osq; /* spinner MCS lock */
|
struct optimistic_spin_node *osq; /* spinner MCS lock */
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
||||||
struct lockdep_map dep_map;
|
struct lockdep_map dep_map;
|
||||||
|
|
|
@ -14,18 +14,18 @@
|
||||||
* called from interrupt context and we have preemption disabled while
|
* called from interrupt context and we have preemption disabled while
|
||||||
* spinning.
|
* spinning.
|
||||||
*/
|
*/
|
||||||
static DEFINE_PER_CPU_SHARED_ALIGNED(struct optimistic_spin_queue, osq_node);
|
static DEFINE_PER_CPU_SHARED_ALIGNED(struct optimistic_spin_node, osq_node);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get a stable @node->next pointer, either for unlock() or unqueue() purposes.
|
* Get a stable @node->next pointer, either for unlock() or unqueue() purposes.
|
||||||
* Can return NULL in case we were the last queued and we updated @lock instead.
|
* Can return NULL in case we were the last queued and we updated @lock instead.
|
||||||
*/
|
*/
|
||||||
static inline struct optimistic_spin_queue *
|
static inline struct optimistic_spin_node *
|
||||||
osq_wait_next(struct optimistic_spin_queue **lock,
|
osq_wait_next(struct optimistic_spin_node **lock,
|
||||||
struct optimistic_spin_queue *node,
|
struct optimistic_spin_node *node,
|
||||||
struct optimistic_spin_queue *prev)
|
struct optimistic_spin_node *prev)
|
||||||
{
|
{
|
||||||
struct optimistic_spin_queue *next = NULL;
|
struct optimistic_spin_node *next = NULL;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (*lock == node && cmpxchg(lock, node, prev) == node) {
|
if (*lock == node && cmpxchg(lock, node, prev) == node) {
|
||||||
|
@ -59,10 +59,10 @@ osq_wait_next(struct optimistic_spin_queue **lock,
|
||||||
return next;
|
return next;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool osq_lock(struct optimistic_spin_queue **lock)
|
bool osq_lock(struct optimistic_spin_node **lock)
|
||||||
{
|
{
|
||||||
struct optimistic_spin_queue *node = this_cpu_ptr(&osq_node);
|
struct optimistic_spin_node *node = this_cpu_ptr(&osq_node);
|
||||||
struct optimistic_spin_queue *prev, *next;
|
struct optimistic_spin_node *prev, *next;
|
||||||
|
|
||||||
node->locked = 0;
|
node->locked = 0;
|
||||||
node->next = NULL;
|
node->next = NULL;
|
||||||
|
@ -149,10 +149,10 @@ bool osq_lock(struct optimistic_spin_queue **lock)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void osq_unlock(struct optimistic_spin_queue **lock)
|
void osq_unlock(struct optimistic_spin_node **lock)
|
||||||
{
|
{
|
||||||
struct optimistic_spin_queue *node = this_cpu_ptr(&osq_node);
|
struct optimistic_spin_node *node = this_cpu_ptr(&osq_node);
|
||||||
struct optimistic_spin_queue *next;
|
struct optimistic_spin_node *next;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Fast path for the uncontended case.
|
* Fast path for the uncontended case.
|
||||||
|
|
|
@ -118,12 +118,12 @@ void mcs_spin_unlock(struct mcs_spinlock **lock, struct mcs_spinlock *node)
|
||||||
* mutex_lock()/rwsem_down_{read,write}() etc.
|
* mutex_lock()/rwsem_down_{read,write}() etc.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct optimistic_spin_queue {
|
struct optimistic_spin_node {
|
||||||
struct optimistic_spin_queue *next, *prev;
|
struct optimistic_spin_node *next, *prev;
|
||||||
int locked; /* 1 if lock acquired */
|
int locked; /* 1 if lock acquired */
|
||||||
};
|
};
|
||||||
|
|
||||||
extern bool osq_lock(struct optimistic_spin_queue **lock);
|
extern bool osq_lock(struct optimistic_spin_node **lock);
|
||||||
extern void osq_unlock(struct optimistic_spin_queue **lock);
|
extern void osq_unlock(struct optimistic_spin_node **lock);
|
||||||
|
|
||||||
#endif /* __LINUX_MCS_SPINLOCK_H */
|
#endif /* __LINUX_MCS_SPINLOCK_H */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user