On 4/11/07, Matthew Wilcox <matthew@xxxxxx> wrote:
On Tue, Apr 10, 2007 at 05:45:07PM -0400, Robert P. J. Day wrote: > that works fine if you're defining a single spinlock, but what do you > do in cases like this: > > arch/sparc/lib/atomic32.c: [0 ... (ATOMIC_HASH_SIZE-1)] = SPIN_LOCK_UNLOCKED > > that is, when you're assigning an array of them? you still need some > kind of generic, unnamed spinlock in those circumstances, no? That's a special case for architecture-only code. It's not to be used by drivers.
as per my understanding, [which i should have keyed in earlier] different places where SPIN_LOCK_UNLOCKED currently appears are 1. static spinlock_t foobar = SPIN_LOCK_UNLOCKED; needs to be replaced bye DEFINE_SPINLOCK e.g linux-core/drm_memory_debug.h -static spinlock_t drm_mem_lock = SPIN_LOCK_UNLOCKED; +static DEFINE_SPINLOCK(drm_mem_lock); there are very few occurrences left in the tree i see 2. allocating a data structure dynamically & initializing the spinlock embedded within use spin_lock_init() e.g linux-core/via_dmablit.c - blitq->blit_lock = SPIN_LOCK_UNLOCKED; + spin_lock_init(&blitq->blit_lock); 3. static initialization of structure members struct foo bar ={ . . . .lock = SPIN_LOCK_UNLOCKED, . } use struct foo bar ={ . . . .lock = __SPIN_LOCK_UNLOCKED(bar.lock), . } e.g arch/i386/kernel/traps.c - .lock = SPIN_LOCK_UNLOCKED, + .lock = __SPIN_LOCK_UNLOCKED(die.lock), plenty of these are still there may be some patches queued 4. arrays of spinlocks e.g arch/cris/arch-v32/kernel/smp.c -spinlock_t cris_atomic_locks[] = { [0 ... LOCK_COUNT - 1] = SPIN_LOCK_UNLOCKED}; +raw_spinlock_t cris_atomic_locks[] = { [0 ... LOCK_COUNT - 1] = __RAW_SPIN_LOCK_UNLOCKED}; my question is still there in the original post about spin_lock_init() CMIIW Refer: http://lkml.org/lkml/2005/6/20/47 http://lkml.org/lkml/2007/1/16/90 http://lists.openwall.net/linux-kernel/2007/02/01/258 -- Milind Arun Choudhary -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ