On Wed, Aug 25, 2010 at 1:18 AM, Lal <learner.ker...@gmail.com> wrote:
> Is below code race free? > > void process_context_function(void) > { > /* interrupts enabled here */ > spin_lock(&lock); > modify_critical_section_list(); > spin_unlock(&lock); > } > > irqreturn_t a2091_intr (int irq, void *_instance) > { > if(spin_trylock(&lock)) { > modify_critical_section_list(); > spin_unlock(&lock); > } > else { > /* skip */ > } > > return IRQ_HANDLED; > } > > > More specifically, can spin_lock & spin_trylock have race? > > Hi Lal, Looks like you have a critical section between process context and interrupt context, right? Then why not just use spin_lock_irq () ? You will not need trylock in that case. Here is the similar discussion where your approach is discussed, http://www.geeksofpune.in/drupal/?q=node/75 >From comments, looks like it is not correct to use trylock on UP. Please refer famous article here, http://www.kernel.org/pub/linux/kernel/people/rusty/kernel-locking/c214.html#MINIMUM-LOCK-REQIREMENTS -Vinit > Regards > Lal > > -- > To unsubscribe from this list: send an email with > "unsubscribe kernelnewbies" to ecar...@nl.linux.org > Please read the FAQ at http://kernelnewbies.org/FAQ > >