Hi Linus, Andrew, do you have any objections to the approach below? Just wondering, since I didn't receive any comments. On Fri, Aug 14, 2009 at 02:58:03PM +0200, Heiko Carstens wrote: > From: Heiko Carstens <heiko.carstens@xxxxxxxxxx> > > This allows an architecture to specify per lock variant if the > locking code should be kept out-of-line or inlined. > > If an architecure wants out-of-line locking code no change is > needed. To force inlining of e.g. spin_lock() the line > > #define __spin_lock_is_small > > needs to be added to arch/<whatever>/include/asm/spinlock.h > > Signed-off-by: Heiko Carstens <heiko.carstens@xxxxxxxxxx> > --- > include/linux/spinlock_api_smp.h | 146 ++++++++++++++++++++++++++++++++++++++- > kernel/spinlock.c | 56 ++++++++++++++ > 2 files changed, 199 insertions(+), 3 deletions(-) > > Index: linux-2.6/include/linux/spinlock_api_smp.h > =================================================================== > --- linux-2.6.orig/include/linux/spinlock_api_smp.h > +++ linux-2.6/include/linux/spinlock_api_smp.h > @@ -19,46 +19,186 @@ int in_lock_functions(unsigned long addr > > #define assert_spin_locked(x) BUG_ON(!spin_is_locked(x)) > > -void __lockfunc _spin_lock(spinlock_t *lock) __acquires(lock); > void __lockfunc _spin_lock_nested(spinlock_t *lock, int subclass) > __acquires(lock); > void __lockfunc _spin_lock_nest_lock(spinlock_t *lock, struct lockdep_map *map) > __acquires(lock); > +unsigned long __lockfunc _spin_lock_irqsave_nested(spinlock_t *lock, int subclass) > + __acquires(lock); > + > +#ifdef __spin_lock_is_small > +#define _spin_lock(lock) __spin_lock(lock) > +#else > +void __lockfunc _spin_lock(spinlock_t *lock) __acquires(lock); > +#endif ... > Index: linux-2.6/kernel/spinlock.c > =================================================================== > --- linux-2.6.orig/kernel/spinlock.c > +++ linux-2.6/kernel/spinlock.c ... > +#ifndef __spin_lock_is_small > void __lockfunc _spin_lock(spinlock_t *lock) > { > __spin_lock(lock); > } > EXPORT_SYMBOL(_spin_lock); > +#endif -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html