On Tue, 2015-04-28 at 19:17 +0200, Peter Zijlstra wrote: > To me it makes more sense to reverse these two branches (identical code > wise of course) and put the special case first. > > Alternatively we could also do something like the below, which to my > eyes looks a little better still, but I don't care too much. > > if (rwsem_has_spinner(sem)) { > /* > * comment ... > */ > smp_rmb(); > if (!raw_spin_trylock_irqsave(&sem->wait_lock, flags)) > return sem; > goto locked; > } > > raw_spin_lock_irqsave(&sem->wait_lock, flags); > locked:
How about putting this into its own function: static inline bool __rwsem_wake_acquire_wait_lock(sem) { /* * * Comments * */ if (unlikely(rwsem_has_spinner(sem))) { /* * Comments */ smp_rmb(); if (!raw_spin_trylock_irqsave(&sem->wait_lock, flags)) return false; } return true; } -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/